Erreur Syntaxe SQL suite Mise jour V8 [résolu]

bonjour à tous,

nous rencontrons un souci depuis la mise à jour de notre Dolibarr en version 8.0.

En effet, depuis celle ci, il nous est impossible de créer une proposition commerciale, facture ou tout autre document.

l’erreur nous indique un problème de syntaxe dans la requete SQL. par exemple voici le message lors de la création d’une facture.
… dolibarr/compta/facture/card.php?id=1376#addline

You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near ’ , , 0, 0, 100, null, NULL, 1, 1, 0, ‹ EUR ›, 0, 0, 0, 0)’ at line 1

la version installée est la suivante : dolibarr_8.0.0-4_all.deb

j’ai vérifié l’ensemble des champs, clients, articles, ou autre et je ne vois pas de caractère " ’ " qui pourrait occasionner ce problème.

Si vous aviez une idée, je vous remercie par avance,

Jmy

Alors il semble que cela soit également lié au fournisseur du produit que je souhaite proposer ou facturer.
En effet, lorsque je supprime le fournisseur de la fiche produit, l’erreur disparaît…

Deux solutions:
Soit je trouve l’origine du problème au niveau des class fournisseurs
Soit je me tape un à un mes produits pour supprimer le fournisseur.

j’aimerais autant éviter la seconde option :wink:

si vous avez une idée, je suis preneur, merci.

Jmy

Bonjour

Peux tu faire un dolibarr.log du problème?

Fred

bonsoir,

voici le contenu du fichier de log pour résumer l’endroit de l’erreur mais je vous le joins si vous aviez besoin de la totalité:

2018-08-22 21:22:07 DEBUG 82.64.12.68 sql=INSERT INTO llx_facturedet (fk_facture, fk_parent_line, label, description, qty, vat_src_code, tva_tx, localtax1_tx, localtax2_tx, localtax1_type, localtax2_type, fk_product, product_type, remise_percent, subprice, fk_remise_except, date_start, date_end, fk_code_ventilation, rang, special_code, fk_product_fournisseur_price, buy_price_ht, info_bits, total_ht, total_tva, total_ttc, total_localtax1, total_localtax2, situation_percent, fk_prev_id, fk_unit, fk_user_author, fk_user_modif, fk_multicurrency, multicurrency_code, multicurrency_subprice, multicurrency_total_ht, multicurrency_total_tva, multicurrency_total_ttc) VALUES (1386, null, null, 'Ligne 

06 09 09 09 09 avec Iphone X 256Go ', 1, ‹  ›, 0, 0, 0, ‹ 0 ›, ‹ 0 ›, 1560, 1, 0, 0, null, null, null, 0, 1, 0, null, -10, ‹ 0 ›, , , , 0, 0, 100, null, NULL, 1, 1, 0, ‹ EUR ›, 0, 0, 0, 0)
2018-08-22 21:22:07 ERR 82.64.12.68 DoliDBMysqli::query SQL Error message: DB_ERROR_SYNTAX You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near ’ , , 0, 0, 100, null, NULL, 1, 1, 0, ‹ EUR ›, 0, 0, 0, 0)’ at line 1

Merci

Jmy

Bonjour

Il semblerait que total_ht, total_tva, total_ttc ne soient pas calculés, les champs sont vides.
Il n’y a pas de tva?

Fred

en complément :
Version Server Apache/2.2.22 (Debian)
Version PHP 5.4.45-1~dotdeb+7.1
Version MySQL or MariaDB 5.7.22 mysqli (5.5.44)

Merci

Jmy

bonjour,

je n’avais pas vu votre réponse lorsque j’ai posé mon complément.

effectivement, il s’agit d’un service et qui n’a pas de valeur TTC.

ci joint le screenshot de la ligne. vous pensez que cela peut venir de là?

je tente avec une tva et je vous confirme si cela a un impact.

Jmy

2018-08-23_164609.jpg

je vous confirme qu’il s’agit de la valeur du champ vat_src_code retournée qui semble poser problème.

à quoi correspond ce champ? coté MySQL c’est un INT (11) avec une valeur par défaut NULL.
j’ai tenté de modifier la valeur par defaut en 0 mais ça ne semble pas avoir d’effet…

je ne comprends pas comment la mise à jour a pu agir sur ce point …

si vous avez des idées, je suis preneur !

merci

JMy

J’ai trouvé.

2 problèmes existaient dans la base.

Le premier est le type de src_vat_code. dans les bases SQL, il était référencé comme INT(11), en le modifiant en CHAR, cela m’a solutionné la moitié des problèmes.

Le second est que l’ensemble des prix de ventes (produits et services) nécessitent d’être consolidés.
En effet, mes requêtes semblent voir les champs vides.
il suffit de rentrer dans la fiche produit, de faire modifier le prix de vente, et sans même changer la valeur, cliquer sur enregistrer.
cela met à jour la fiche et les erreurs disparaissent lors de la création de la proposition commerciale ou de la facture.

par contre, je n’ai pas trouvé de moyen facile pour effectuer la modification en masse.
en effet, modification en masse des services n’existent pas et le module coefpricR n’est pas assez développé.

du coup faut juste prendre le temps de ressaisir les infos.

voilà, j’espère que ça servira aux suivants.

en complément, pour trouver le type de vat_src_code à modifier :
SELECT COLUMN_NAME, TABLE_NAME FROM INFORMATION_SCHEMA.COLUMNS WHERE COLUMN_NAME LIKE ‹ %vat_src_code% ›;

±-------------±----------------------+
| COLUMN_NAME | TABLE_NAME |
±-------------±----------------------+
| vat_src_code | llx_commandedet |
| vat_src_code | llx_contratdet |
| vat_src_code | llx_expensereport_det |
| vat_src_code | llx_facture_rec |
| vat_src_code | llx_facturedet |
| vat_src_code | llx_facturedet_rec |
| vat_src_code | llx_product |
| vat_src_code | llx_propal |
| vat_src_code | llx_propaldet |
±-------------±----------------------+

pour la modifier : ALTER TABLE llx_facture_rec MODIFY COLUMN vat_src_code CHAR;

merci pour votre aide.

Jmy

1 J'aime

Sur ma v7, vat_src_code est un VARCHAR(11) dans la table llx_facture_rec