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