Bienvenido a los foros %s

Foro comunidad hispana Dolibarr

Identificarse Registrarse

Dolibarr ha detectado un error técnico: DB_ERROR_42883 Ningún operador coincide en el nombre y tipos de argumentos

Si cree que ha encontrado un error en una versión estable, siéntase libre de comunicarlo aquí, indicando la versión.
gfgs58
Novato
Mensajes: 2
Registrado: Vie, 30/04/2021, 19:54

Dolibarr ha detectado un error técnico: DB_ERROR_42883 Ningún operador coincide en el nombre y tipos de argumentos

Mensaje por gfgs58 »

Buenas,

Me he topado con el siguiente error:

--------------------------------------------------------------------------------------------------------
Dolibarr ha detectado un error técnico.
Esta información puede ser útil para el diagnóstico (puede configurar la opción $dolibarr_main_prod to '1' para eliminar estas notificaciones):
Fecha: 20210430174222
Dolibarr: 13.0.2 - https://www.dolibarr.org
Nivel de funciones: 0
PHP: 8.0.3
Servidor: Apache/2.4.46 (Unix) OpenSSL/1.1.1k PHP/8.0.3
SO: Linux gfgs01 5.11.16-arch1-1 #1 SMP PREEMPT Wed, 21 Apr 2021 17:22:13 +0000 x86_64
UserAgent: Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/89.0.4389.86 Safari/537.36

URL solicitada: /dolibarr/htdocs/admin/limits.php?mainmenu=home
Referer: https://localhost/dolibarr/htdocs/admin/dict.php?id=10
Gestor de menú: eldy_menu.php

Módulos: user, societe, propal, commande, expedition, ficheinter, ticket, agenda, expensereport, fournisseur, supplier_proposal, reception, facture, salaries, loan, banque, paymentbybanktransfer, margin, product, accounting, tax, service, stock, projet, categorie
Tipo de gestor de base de datos: pgsql (postgresql 13.2)
Último error en solicitud de acceso de base de datos: SELECT taux as vat_rate, t.code as vat_code, t.localtax1 as localtax_rate1, t.localtax2 as localtax_rate2 FROM llx_c_tva as t, llx_c_country as c WHERE t.active=1 AND t.fk_pays = c.rowid AND c.code='PY' AND (t.taux <> 0 OR t.localtax1 <>0 OR t.localtax2 <>0) ORDER BY t.taux ASC
Código de retorno de error para la última petición de acceso a la base de datos: DB_ERROR_42883
Información del último error de petición de acceso de base de datos: ERROR: 42883: el operador no existe: character varying <> integer\nLINE 1: ...d AND c.code='PY' AND (t.taux <> 0 OR t.localtax1 <>0 OR t.l...\n ^\nHINT: Ningún operador coincide en el nombre y tipos de argumentos. Puede ser necesario agregar conversión explícita de tipos.\nLOCATION: op_error, parse_oper.c:722

Precio unitario sin IVA de un producto: 3.33333 x Cantidad: 1 - IVA: 10% -> Precio total después del redondeo: 3.33 / 0.34 / 3.67
Precio unitario sin IVA de un producto: 3.33333 x Cantidad: 2 - IVA: 10% -> Precio total después del redondeo: 6.67 / 0.66 / 7.33
--------------------------------------------------------------------------------------------------------

Creo que el error se debe a que "localtax1" y "localtax2" son de tipo "character varying", y se está comparando contra un integer.

¿Alguna solución o workaround?

Gracias,
Gustavo

gfgs58
Novato
Mensajes: 2
Registrado: Vie, 30/04/2021, 19:54

Mensaje por gfgs58 »

I changed the following line, to get rid of the error:

diff dolibarr/htdocs/admin/limits.php /srv/http/dolibarr/htdocs/admin/limits.php
252c252
< $sql .= " WHERE t.active=1 AND t.fk_pays = c.rowid AND c.code='".$db->escape($mysoc->country_code)."' AND (t.taux <> 0 OR t.localtax1 <>0 OR t.localtax2 <>0)";
---
> $sql .= " WHERE t.active=1 AND t.fk_pays = c.rowid AND c.code='".$db->escape($mysoc->country_code)."' AND (t.taux <> 0 OR t.localtax1::numeric <>0 OR t.localtax2::numeric <>0)";

but, this is particular to postgresql.