CADENA COMERCIAL OXXO S.A. DE C.V.
ESPECIFICACIONES PARA CDIGOS DE BARRAS DE SERVICIOS QUE SERN
CAPTADOS EN TIENDAS OXXO
03/03/2009
Cadena Comercial Oxxo, S.A. de C.V. Edison 1235 Nte. Col. Talleres, Monterrey, N.L. C.P. 64480, Tel. (81) 83892121
Especificaciones para cdigos de barra 2
ndice1INTRODUCCION...............................................................................................................................3
2ATRIBUTOSDELCODIGODEBARRAS.............................................................................................4
2.1Longitud...........................................................................................................................4
2.2PrefijoIdentificador.........................................................................................................4
2.3Referencia........................................................................................................................4
2.4Fechadevigencia.............................................................................................................5
2.5Monto...............................................................................................................................5
2.6Dgitoverificador..............................................................................................................5
2.7Tiposdecdigoofuente..................................................................................................6
2.8Dimensiones.....................................................................................................................7
3ALGORITMOSPARADIGITOVERIFICADOR.....................................................................................8
3.1AlgoritmoBase10...........................................................................................................8
3.2Algoritmo137.................................................................................................................9
3.3Algoritmo19.................................................................................................................10
4EJEMPLOS.......................................................................................................................................11
4.1Ejemplo1........................................................................................................................11
4.2Ejemplo2........................................................................................................................12
5REFERENCIAS..................................................................................................................................13
6BARCODESGENERATOR...15
Cadena Comercial Oxxo, S.A. de C.V. Edison 1235 Nte. Col. Talleres, Monterrey, N.L. C.P. 64480, Tel. (81) 83892121
Especificaciones para cdigos de barra 3
1. INTRODUCCION
Los cdigos de barras de los servicios que sern captados en las tiendas de Cadena Comercial OXXO deben reunir ciertos atributos para poder ser interpretados correctamente por el Sistema Punto de Venta, los cules son:
Longitud Prefijo identificador Referencia Fecha de vigencia Monto Dgito verificador Tipo de cdigo o fuente Dimensiones
En este documento se explica a detalle cada uno de estos atributos.
2. ATR
2.1 Lo
Se reffija y p
Ejemp
2.2 Pr
Son lase est
2.3 Re
Es el iDebe que no
Ejemp
Cadena Comercia
Especificaciones
RIBUTOS D
ongitud
fiere al total puede ser en
plo de cdigo
refijo Identif
as dos primet cobrando.
eferencia
identificadorser numrico se utilicen
plo: Referenc
al Oxxo, S.A. de C
para cdigos de
DEL CODIGO
de dgitos qntre 18 y 32
o de longitud
ficador
eras posicion. Es asignad
r del cliente uca, Justificad
para comple
cia No. 0123
C.V. Edison 1235 N
barra
O DE BARR
ue regresa eposiciones e
d 28:
nes del cdigdo por la cate
utilizado porda a la derecetar la longit
345
Nte. Col. Talleres,
RAS
el escner aen total, Seg
go y se utilizegora de se
r el proveedocha y se debtud especific
Monterrey, N.L. C
al leer el cdgn las nece
za como idenervicios de C
or. ben rellenar ccada.
C.P. 64480, Tel. (8
igo de barraesidades del
ntificador deCadena Com
con ceros la
1) 83892121
as. Debe serl proveedor.
el servicio qumercial OXXO
as posiciones
4
r
ue O.
s
2.4 Fe
Se utilForma Ejemp
2.5 Mo
Es el mdecim
Ejemp
2.6 D
Es la ledo c
Debe para c
Ejemp
Cadena Comercia
Especificaciones
echa de vige
liza para queato: AAAAMM
plo: Fecha de
onto
monto de la ales y se de
plo: Monto de
gito Verific
ltima posicicorrectamen
ser calculadcalcular dgit
plo: Dgito ca
al Oxxo, S.A. de C
para cdigos de
encia
e el SistemaMDD
e vigencia 3
factura que eben rellenar
e la factura $
ador
in del cdignte.
do con uno dto verificador
alculado con
C.V. Edison 1235 N
barra
a Punto de V
31-Dic-2009
se va a cobr con ceros l
$150.00
go. Se utiliza
de los algoritr.
n algoritmo B
Nte. Col. Talleres,
Venta no per
brar al clientelas posicione
a para valida
tmos que se
Base 10
Monterrey, N.L. C
rmita el cobr
e. Se debe ees no utiliza
ar que el cd
e detallan en
C.P. 64480, Tel. (8
ro de factura
especificar sdas.
digo de barra
la seccin A
1) 83892121
as vencidas.
si incluye o n
as se haya
Algoritmos
5
no
Cadena Comercial Oxxo, S.A. de C.V. Edison 1235 Nte. Col. Talleres, Monterrey, N.L. C.P. 64480, Tel. (81) 83892121
Especificaciones para cdigos de barra 6
2.7 Tipos de Cdigo o Fuente.
Los cdigos de barras deben ser generados con los siguientes dos tipos de fuentes:
Entrelazado 2 de 5 Cdigo 128
Ejemplo de cdigo entrelazado 2 de 5
Ejemplo de cdigo 128
Recomendaciones.
- Algunos componentes tienen variantes del cdigo 128 (A,B,C,D,E) las que mejor se leen en los escner de las tiendas son las variantes C y D.
- Al utilizar un componente para generar el cdigo es recomendable que sea autoajustable.
2.8 Di
Las dide larg
La imptener e
Es impse peg
Cadena Comercia
Especificaciones
mensiones
mensiones qgo aproxima
presin del cel fondo blan
portante tenguen barras
al Oxxo, S.A. de C
para cdigos de
que deben tadamente.
cdigo de banco y sin gra
er cuidado a.
C.V. Edison 1235 N
barra
ener los cd
arras debe sabados para
al ajustar las
Nte. Col. Talleres,
digos de bar
ser ntida, noa facilitar la le
s dimensione
Monterrey, N.L. C
rras son de 1
o estar borroectura en el
es del cdigo
C.P. 64480, Tel. (8
1 cm de alto
osa o incompescner.
o que no se
1) 83892121
por 4 - 6 cm
pleta, debe
distorsione
7
m
o
Cadena Comercial Oxxo, S.A. de C.V. Edison 1235 Nte. Col. Talleres, Monterrey, N.L. C.P. 64480, Tel. (81) 83892121
Especificaciones para cdigos de barra 8
3. ALGORITMOS PARA CALCULAR DIGITO VERIFICADOR
3.1 Algoritmo Base 10
Ejemplo: 88010722600015050 6
1. Empezando de atrs para adelante se multiplica el primer nmero del cdigo por 2, el siguiente por 1, el siguiente por 2, el siguiente por 1 y as sucesivamente.
0 x 2 = 0 5 x 1 = 5 0 x 2 = 0 5 x 1 = 5 1 x 2 = 2 0 x 1 = 0 0 x 2 = 0 0 x 1 = 0 6 x 2 = 12 2 x 1 = 2 2 x 2 = 4 7 x 1 = 7 0 x 2 = 0 1 x 1 = 1 0 x 2 = 0 8 x 1 = 8 8 x 2 = 16
3. Se suman los resultados (los nmeros de 2 cifras se separan y se suman)
0 + 5 + 0 + 5 + 2 + 0 + 0 + 0 + 3 + 2 + 4 + 7 + 0 + 1 + 0 + 8 + 7 = 44 4. Se divide el resultado de la suma entre 10 y se obtiene el residuo
44 / 10 = 4 Residuo --> 4 5. Si el resido es igual a cero el dgito es cero. Si el residuo es diferente de cero el dgito es el resultado de restarle a 10 el residuo
Digito = 10 4 = 6
Cadena Comercial Oxxo, S.A. de C.V. Edison 1235 Nte. Col. Talleres, Monterrey, N.L. C.P. 64480, Tel. (81) 83892121
Especificaciones para cdigos de barra 9
3.2 Algoritmo 1 3 7
Ejemplo: 88010722600015050 1
1. Se multiplica el primer nmero del cdigo por 1, el siguiente por 3, el siguiente por 7, el siguiente por 1, el siguiente por 3, el siguiente por 7 y as sucesivamente.
8 x 1 = 8 8 x 3 = 24 0 x 7 = 0 1 x 1 = 1 0 x 3 = 0 7 x 7 = 49 2 x 1 = 2 2 x 3 = 6 6 x 7 = 42 0 x 1 = 0 0 x 3 = 0 0 x 7 = 0 1 x 1 = 1 5 x 3 = 15 0 x 7 = 0 5 x 1 = 5 0 x 3 = 0
2. Se suman los resultados.
8 + 24 + 0 + 1 + 0 + 49 + 2 + 6 + 42 + 0 + 0 + 0 + 1 + 15 + 0 + 5 + 0 = 153 3. Se obtiene el residuo de dividir la suma entre nueve.
153/9 = 17 Residuo = 0 4. Se le suma 1 al residuo y el resultado es el DV.
Dgito = 0 + 1 = 1
Cadena Comercial Oxxo, S.A. de C.V. Edison 1235 Nte. Col. Talleres, Monterrey, N.L. C.P. 64480, Tel. (81) 83892121
Especificaciones para cdigos de barra 10
3.3 Algoritmo 1 - 9
Ejemplo: 88010722600015050 8
1. Se multiplica el primer nmero del cdigo por 1, el siguiente por 2, el siguiente por 3, el siguiente por 4, el siguiente por 5, el siguiente por 6, el siguiente por 7, el siguiente por 8, el siguiente por 9, el siguiente por 1, el siguiente por 2 y as sucesivamente.
8 x 1 = 8 8 x 2 = 16 0 x 3 = 0 1 x 4 = 4 0 x 5 = 0 7 x 6 = 42 2 x 7 = 14 2 x 8 = 16 6 x 9 = 54 0 x 1 = 0 0 x 2 = 0 0 x 3 = 0 1 x 4 = 4 5 x 5 = 25 0 x 6 = 0 5 x 7 = 35 0 x 8 = 0
2. Se suman los resultados.
8 + 16 + 0 + 4 + 0 + 42 + 14 + 16 + 54 + 0 + 0 + 0 + 4 + 25 + 0 + 35 + 0 = 218 2. El DV son las unidades de la suma.
Suma = 218 DV = 8
4. EJE
4.1 Eje El prov AtribuLongitPrefijoRefereVigencMontoDigito 8800 PrefijoRefereVigencMontoDV Fuente
Fuente
Cadena Comercia
Especificaciones
EMPLOS
emplo 1
veedor A va
to tud o encia cia
o Verificador
001234520
o 88encia 00cia 20
o 00 6
e Entrelazado
e Cdigo 128
al Oxxo, S.A. de C
para cdigos de
a generar su
Valor26 88 8 AAAA5,2 DeBase
00912310
8 0012345 0091231 025050 ($
o 2 de 5
8
C.V. Edison 1235 N
barra
u CB con las s
r
AMMDD ec. 10
00250506
(31-Dic-2$250.00)
Nte. Col. Talleres,
siguientes ca
Posic 1-2 3-10 11-1819-2526
6
2009)
Monterrey, N.L. C
ractersticas:
cin
C.P. 64480, Tel. (81) 83892121
11
4.2 Eje El prov AtribuLongitPrefijoRefereVigencMontoDigito 1412 PrefijoRefereVigencRellenMontoDV Fuente
Fuente
Cadena Comercia
Especificaciones
emplo 2
veedor B va
to tud o encia cia
o Verificador
23452009
o 14encia 12cia 20
no 0 o 00
5
e Entrelazado
e Cdigo 128
al Oxxo, S.A. de C
para cdigos de
a generar su
Valor22 14 5 AAAA5,0 De137
12310002
4 2345 0091231 (
0250 ($25
o 2 de 5
C.V. Edison 1235 N
barra
u CB con las s
r
AMMDD ec.
2505
(31-Dic-2
50)
Nte. Col. Talleres,
siguientes ca
Posic 1-2 3-7 8-15 17-2122
009)
Monterrey, N.L. C
ractersticas:
cin
C.P. 64480, Tel. (81) 83892121
12
Cadena Comercial Oxxo, S.A. de C.V. Edison 1235 Nte. Col. Talleres, Monterrey, N.L. C.P. 64480, Tel. (81) 83892121
Especificaciones para cdigos de barra 13
5. REFERENCIAS En esta seccin se enlistan algunos links que se han utilizado en la generacin de cdigos de barras. Cadena Comercial OXXO no se hace responsable por el uso de cualquiera de ellos. 1.http://www.idautomation.com/java/linearservlet.html
2.https://sourceforge.net/projects/barcodejava/
3.http://www.barcodingfonts.com/
Cadena Comercial Oxxo, S.A. de C.V. Edison 1235 Nte. Col. Talleres, Monterrey, N.L. C.P. 64480, Tel. (81) 83892121
Especificaciones para cdigos de barra 14
4.http://www.barcodemagic.com/
5.www.barcodemill.com.
6.http://www.digitalmetaphors.com/
7.http://www.ashberg.de/php-barcode/
Cadena Comercial Oxxo, S.A. de C.V. Edison 1235 Nte. Col. Talleres, Monterrey, N.L. C.P. 64480, Tel. (81) 83892121
Especificaciones para cdigos de barra 15
6.0BarCodeSGenerator
BarCode.jarcontienemtodosparacrearcdigodebarrasdeltipo128.SiendolegiblesparaelscannerutilizadoporOxxo.ParaejecutarlosejemploscontenidosdeberguardarelarchivojarenelpathdondefueinstaladosuSDKy/oJREencasoquedeseecompilaryejecutarlaaplicacin.EncasoqueustedquierahaceralgunaaplicacinWEB,tendrqueguardareljarenlacarpetalibdelTomCatodelApplicationServerqueestutilizando,paraquepuedacrearloscdigosdebarras.C:\jdk1.5.0_12\jre\lib\extC:\jre1.5.0_12\lib\extUstedpodrusarlosejemplosagregados,stosgeneranelcdigodebarrasenarchivosJPEGoGIF.Verejemplosenlasiguientepgina.
Cadena Comercial Oxxo, S.A. de C.V. Edison 1235 Nte. Col. Talleres, Monterrey, N.L. C.P. 64480, Tel. (81) 83892121
Especificaciones para cdigos de barra 16
6.1 Crearcdigosdebarrasdeltipo128exportndoseaJPEG.
//importacinlibrerasimportjava.io.*;importcom.org.barcode.*;importcom.org.barcode.encoder.*;classCODE128JPEG{publicstaticvoidmain(String[]args){//Getthedatatoencodeinbarcode//CapturavaloresdesdelaconsolaStringmessage=null;BufferedReaderin=newBufferedReader(newInputStreamReader(System.in),1);System.out.print("Enterdatatoencode:");//Sevalidaqueelusuariocapturealgoenconsolatry{message=in.readLine();if(message==null)return;//AlldoneonEOF,sojustexit.}catch(IOExceptione){System.out.println("\n\n***Exceptioncaught:"+e);return;}//NOTE:"BarCode"istheclassofthelinearbarcodeencoderBarCodebc=newBarCode();//setthedatatoencode//Sesetaeelvalorcapturadoporelusuariobc.code=message;//selectthebarcodesymbology//segeneratipodecodigodebarrasbc.barType=bc.CODE128;//Sizeofbarcode//seestableceeltamaaodelcodigobc.resolution=38; //bc.rotate=90;//createthefileasthenameofthemessage//segeneraelarchiveconextencion.jpegbarCodeEncoderbce=newbarCodeEncoder(bc,"JPEG","GENERATOR"+message+".jpeg");System.exit(0);}}
Cadena Comercial Oxxo, S.A. de C.V. Edison 1235 Nte. Col. Talleres, Monterrey, N.L. C.P. 64480, Tel. (81) 83892121
Especificaciones para cdigos de barra 17
BarCodefabricadoporelAPI: 6.2.Crearcdigosdebarrasdeltipo128exportndoseaGIF.importjava.io.*;importcom.org.barcode.*;importcom.org.barcode.encoder.*;classCODE128GIF{publicstaticvoidmain(String[]args){//GetthedatatoencodeinbarcodeStringmessage=null;BufferedReaderin=newBufferedReader(newInputStreamReader(System.in),1);System.out.print("Codigodebarrasagenerar:");try{message=in.readLine();if(message==null)return;//AlldoneonEOF,sojustexit.}catch(IOExceptione){System.out.println("\n\n***Exceptioncaught:"+e);return;}//NOTE:"BarCode"istheclassofthelinearbarcodeencoderBarCodebc=newBarCode();//setthedatatoencodebc.code=message;//selectthebarcodesymbologybc.barType=bc.CODE128;//SizeofbarCodebc.resolution=38; //bc.rotate=90;//createthefileasthenameofthemessagebarCodeEncoderbce=newbarCodeEncoder(bc,"GIF","GENERATOR"+message+".gif");System.exit(0);}}
Cadena Comercial Oxxo, S.A. de C.V. Edison 1235 Nte. Col. Talleres, Monterrey, N.L. C.P. 64480, Tel. (81) 83892121
Especificaciones para cdigos de barra 18
BarCodefabricadoporelAPI: 6.3.PasosparamanejodeBarcodesenDelphiCreacindelobjeto{Secreaunobjetobarcode.Esteobjetoseliberacuandolaformasevaadestruir,debidoaqueelpropietariodelobjetoeslamismaforma(parametroself)}Barcode1:=TAsBarcode.Create(self);Barcode1.Top:=50;Barcode1.Left:=30;Barcode1.Typ:=bcCodePostNet;Barcode1.Modul:=2;Barcode1.Ratio:=2.0;Barcode1.Height:=50;Barcode1.OnChange:=Self.Barcode1Change;
ImpresinprocedureTForm1.print_demo(bc:TAsBarcode);vartmpbarcode:TAsBarcode;begin{secreaunobjetobarcodetemporal,paracambiarlealgunaspropiedades}tmpbarcode:=TAsBarcode.Create(nil);{copiamoselobjeto}tmpbarcode.Assign(bc);trywithprinterdobeginBeginDoc;Canvas.TextOut(10,10,'DemodeimpresiondeBarcode'+DateTimeToStr(Now));{AlturadelBarcode:13mm}tmpbarcode.Height:=ConvertMmToPixelsY(13.0);{Modulwidth:0.2mm}tmpbarcode.Modul:=ConvertMmToPixelsX(0.2);tmpbarcode.Top:=ConvertMmToPixelsY(100.0);tmpbarcode.Left:=ConvertMmToPixelsX(35.0);tmpbarcode.DrawBarcode(Canvas);EndDoc;end;finallytmpbarcode.Free;end;end;
Cadena Comercial Oxxo, S.A. de C.V. Edison 1235 Nte. Col. Talleres, Monterrey, N.L. C.P. 64480, Tel. (81) 83892121
Especificaciones para cdigos de barra 19
6.4.CreacindecdigosdebarrasenASP.NETEnelforodeMSDNhanconsultadocomopodergenerarcdigosdebarraenunaaplicacinASP.NET,yohacebastantetiempohiceunejemploparaunaaplicacinwindowsutilizandounasfuentesTrueTypeparaestemenesteryahoraharlomismoperoparaunaaplicacinweb.ElartculooriginalparaWindowslopodisencontrarenlawebdelguilleenhttp://www.elguille.info/colabora/NET2006/Marckys_BarCode.htm.Loprimeroquevoyahaceresunproyectowebconunasimplepginadondepodrintroducirlosdatosparagenerarelcdigodebarrasyunacomboparaseleccionarlasfuentesquemedarnlosdiferentesformatosdecdigodebarras.Laideadeestautilidadesmostrarlosdatosenunformatodecdigodebarrasylaopcinqueheconsideradomsoportunaesgenerarunaimagenconestetextoymostrarloenlawebcomounsimplecontroldeservidorimagedetodalavida.Parapoderrealizarestositenernosquecomplicarmuchsimolavida.Lomejorescrearunhttphandlerquenosgenereestaimagenylamuestreenelcontrol.QueesunHttpHandler??PuesunmanejadordelassolicitudeshttpqueimplementalainterfaceIHttpHandlerynospuedeservirtantoparainterceptarlasllamadasdeunficheroconunaextensinenparticularcomoparallamarlodirectamente,comovaasernuestrocaso.NuestroManejador:TansencillocomounaclasepblicaqueimplementalainterfazIHttpHandler.publicclassMarckysCodeBar:IHttpHandlerImplementaelmtodoProcessRequestylapropiedadIsReusable.ElMtodoProcessRequestrecuperamoslosparmetrosquenecesitamosparagenerarlaimagenyenviamoslarespuestaalapeticinhttp.publicvoidProcessRequest(HttpContextcontext){stringcd=context.Request.QueryString.Get("code");stringfm=context.Request.QueryString.Get("format");intwidth=(!string.IsNullOrEmpty(context.Request.QueryString.Get("width")))?int.Parse(context.Request.QueryString.Get("width")):200;intheight=(!string.IsNullOrEmpty(context.Request.QueryString.Get("height")))?int.Parse(context.Request.QueryString.Get("height")):60;intsize=(!string.IsNullOrEmpty(context.Request.QueryString.Get("size")))?int.Parse(context.Request.QueryString.Get("size")):60;if(!string.IsNullOrEmpty(cd)){System.IO.MemoryStreammemStream=newSystem.IO.MemoryStream();Bitmapbitmap=newBitmap(width,height);Graphicsgrafic=Graphics.FromImage(bitmap);grafic.FillRectangle(newSolidBrush(Color.White),0,0,(float)width,(float)height);Fontfuente=CargarFuente(fm,size);Pointpoint=newPoint();SolidBrushbrush=newSolidBrush(Color.Black);grafic.DrawString(FormatBarCode(cd),fuente,brush,point);context.Response.ContentType="image/jpeg";bitmap.Save(context.Response.OutputStream,System.Drawing.Imaging.ImageFormat.Jpeg);}elsecontext.Response.Write("");}Estemanejadorsimplementerecuperalafuentequeutilizaremosdelalistadisponible
Cadena Comercial Oxxo, S.A. de C.V. Edison 1235 Nte. Col. Talleres, Monterrey, N.L. C.P. 64480, Tel. (81) 83892121
Especificaciones para cdigos de barra 20
creaunbitmapyleinsertaeltextoconlafuentedelcdigodebarrasparamostrarelresultadocomounaimagenjpeg.Losotrosdosmtodosadestacareselformateodelosdatosparaquesepuedanleerdesdeunlectordecdigosdebarrasaadiendoloscaracteresdeescapecorrespondientes.privatestringFormatBarCode(stringcode){stringbarcode=string.Empty;barcode=string.Format("*{0}*",code);returnbarcode;}Ycuandogeneramoslanuevafuenteparacargarenelbitmap.privateFontCargarFuente(stringfuente,intsize){stringf="BARCOD39.TTF";switch(fuente){case"E39":f="BARCOD39.TTF";break;case"E13":f="EAN13.TTF";break;case"E9":f="FRE3OF9X.TTF";break;}PrivateFontCollectionpfc=newPrivateFontCollection();pfc.AddFontFile(System.Configuration.ConfigurationManager.AppSettings.Get("PATH_FONTS")+@"\"+f);FontFamilyfontFamily=pfc.Families[0];Font_Font=newFont(fontFamily,(float)size);return_Font;}FinalmenteparaquetodoestofuncionesimplementetenemosqueaadirunaimagenennuestroformulariowebyallanzareleventodelbotndefinirlaUrldelaimagendesdenuestroHandlerconlosparmetrosquenecesitamosparagenerarelcdigodebarrascorrectamente.protectedvoidButton1_Click(objectsender,EventArgse){Image2.ImageUrl=string.Format(@"MarckysCodeBar.ashx?code={0}&format={1}"&width=400&height=60&size=50",TextBox1.Text,"ddlFuents.SelectedItem.Value);Image2.Visible=true;}Ycomounaimagenvalemsquemilpalabrasesteeselresultadofinal.PodeisbajarelproyectodePruebadesdeProyectoCodeBarCross-Posting http://lonetcamp.com