El 24/12/2012 01:00 p.m., Raimon Esteve escribió:
Estoy valorando la posibilidad de incorporar
que los productos tengan el código EAN 13 para poder leerlos con una pistola
lectora de códigos de barras. Sabéis si se ha programado algún módulo que
añada esta funcionalidad?
una pistola convierte el código de barras en un número en un campo.
Por tanto, si el producto en el campo code, dispones de este producto,
ya te lo mostrará/seleccionará en el sale, account invoice, ...

Si quieres añadir un nuevo campo que añade en el product un campo
específico (el ean13, que puede ser diferente que el código del
producto propio del producto), puedes hacer el product_ean13

Si encima quieres validar que este número sea correcto, te dejo un
trozo de código sacado de OERP. Puedes mirar por pypi si ya existe
alguna libreria que valide ean13 o hacer una libreria propia (no hacer
la validación dentro del módulo product_ean13, si no, usando una
libreria sólo para ese uso).

def check_ean(eancode):
     if not eancode:
         return True
     if len(eancode) <> 13:
         return False
     try:
         int(eancode)
     except:
         return False
     oddsum=0
     evensum=0
     total=0
     eanvalue=eancode
     reversevalue = eanvalue[::-1]
     finalean=reversevalue[1:]

     for i in range(len(finalean)):
         if is_pair(i):
             oddsum += int(finalean[i])
         else:
             evensum += int(finalean[i])
     total=(oddsum * 3) + evensum

     check = int(10 - math.ceil(total % 10.0)) %10

     if check != int(eancode[-1]):
         return False
     return True





Y si quieres imprimirlo puedes usar cualquiera de las fuentes truetype libres que hay, o pybarcode que te devuelve un svg o un bitmap usando PIL pasandole el codigo numerico.

--
[email protected] mailing list

Responder a