Bienvenido a los foros %s

Foro comunidad hispana Dolibarr

Identificarse Registrarse

EAN13 buscador código barras 13 dígitos

Si cree que ha encontrado un error en una versión estable, siéntase libre de comunicarlo aquí, indicando la versión.
hipnosapo
Novato
Mensajes: 6
Registrado: Lun, 17/06/2013, 17:33

EAN13 buscador código barras 13 dígitos

Mensaje por hipnosapo »

Hola a todos.

Estamos usando la última versión estable, la 3.4.1.

El problema que tenemos es que tanto en el buscador interno como en el buscador del TPV cuando escaneas un código de barras EAN13 con sus 12 dígitos todo es correcto, pero hay muchos fabricantes que meten en el código de barras el dígito de control número 13 (el que se calcula sólo) y cuando lo pistoleteas dolibarr no es capaz de encontrarlo.

No sé si es un bug o que no está contemplado, supongo que un javascript en el campo del formulario podría calcular si son 13 dígitos lo que han metido y que lo recorte a 12 dígitos.

¿sabe alguien la solución a este tema?

Un saludo y gracias.

hipnosapo
Novato
Mensajes: 6
Registrado: Lun, 17/06/2013, 17:33

Mensaje por hipnosapo »

Hola.

Os cuento la solución que he hecho para el módulo TPV:

archivo cashdesk/facturation.php buscar:

Código: Seleccionar todo

	if (! empty($conf->barcode->enabled)) $sql.= " OR p.barcode LIKE '%".$db->escape(GETPOST('filtre'))."%')";
	        else $sql.= ")";
	

Sustituir por:

Código: Seleccionar todo

	if (! empty($conf->barcode->enabled)){
	                      $str = GETPOST('filtre');
	                      $chars=str_split($str, 1);
	                      $ean12 = $chars[0].$chars[1].$chars[2].$chars[3].$chars[4].$chars[5].$chars[6].$chars[7].$chars[8].$chars[9].$chars[10].$chars[11];
	                      $sql.= " OR p.barcode LIKE '%".$db->escape(GETPOST('filtre'))."%'";
	                      $sql.= " OR p.barcode LIKE '%".$db->escape($ean12)."%')";
	
	        }else{ $sql.= ")";
	        }
	

Para el buscador de código de barras en el "Área de producto":

abrir archivo product/liste.php

Añadimos después de la línea

Código: Seleccionar todo

$sbarcode=GETPOST("sbarcode");

Código: Seleccionar todo

$str = $sbarcode;
	              $chars=str_split($str, 1);
	              $ean12 = $chars[0].$chars[1].$chars[2].$chars[3].$chars[4].$chars[5].$chars[6].$chars[7].$chars[8].$chars[9].$chars[10].$chars[11];
	

Buscamos el siguiente código :

Código: Seleccionar todo

	if ($sbarcode) $sql.= " AND p.barcode LIKE '%".$sbarcode."%'";
	

Sustituimos por:

Código: Seleccionar todo

	if ($sbarcode){
	          $sql.= " AND p.barcode LIKE '%".$sbarcode."%'";
	          $sql.= " OR p.barcode LIKE '%".$ean12."%'";
	    }
	

Un saludo

Avatar de Usuario
marcosgdf
Jedi
Mensajes: 772
Registrado: Vie, 20/07/2012, 14:42
Ubicación: Valladolid, España

Mensaje por marcosgdf »

Hola:

Gracias por informar del error. Será corregido en la próxima versión 3.4.2.

Hipnosapo, he utilizado parte de tu código para resolver el error. He incluido el link a este mensaje en los comentarios para que conste tu autoría. Si quieres que aparezca tu nombre real e Email envíame un mensaje a marc...@gmail.com (entra aquí para ver la dirección completa: http://www.google.com/recaptcha/mailhid ... wyn6bORlA=) o haz un Pull Request en la branch 3.4 de Github.

Un saludo.
Desarrollador con categoría Almirante de Dolibarr.
¿Quiere soporte personalizado? Contacte conmigo.

hipnosapo
Novato
Mensajes: 6
Registrado: Lun, 17/06/2013, 17:33

Mensaje por hipnosapo »

Buenas tardes Marcos.

Te envío un email con los datos.

Y gracias a vosotros por crear y mantener el software.

Un saludo.