erreur en recherchant une propale

Bonjour,
Quand je recherche une propale dans le module commercial, si je tape quelque chose dans «autre» par exemple a, j’obtiens:

Dolibarr a détecté une erreur technique.
Voici les informations qui pourront aider au diagnostic:
Date: 20131203074458
Dolibarr: 3.4.1
Niveau de fonctionnalités: 0
PHP: 5.3.3-7+squeeze17
Server: Apache

Url sollicitée: /dolibarr/comm/propal/list.php
Referer: https://192.168.5.173/dolibarr/comm/index.php?mainmenu=commercial&leftmenu=
Gestionnaire de menu: eldy_menu.php

Type gestionnaire de base de données: mysqli
Requête dernier accès en base en erreur: SELECT s.rowid, s.nom, s.client, p.rowid as propalid, p.total_ht, p.ref, p.ref_client, p.fk_statut, p.fk_user_author, p.datep as dp, p.fin_validite as dfv, u.login FROM llx_societe as s, llx_propal as p LEFT JOIN llx_propaldet as pd ON p.rowid=pd.fk_propal LEFT JOIN llx_user as u ON p.fk_user_author = u.rowid WHERE p.fk_soc = s.rowid AND p.entity = 1 AND (s.nom LIKE ‹ %a% › OR p.note LIKE ‹ %a% › OR pd.description LIKE ‹ %a% ›) ORDER BY p.datep DESC, p.ref DESC LIMIT 26
Code retour dernier accès en base en erreur: DB_ERROR_NOSUCHFIELD
Information sur le dernier accès en base en erreur: Unknown column ‹ p.note › in ‹ where clause ›

Merci

idem sur les factures mais le champ en cause est différent :

Dolibarr a détecté une erreur technique.
Voici les informations qui pourront aider au diagnostic:
Date: 20131218172443
Dolibarr: 3.4.0
Niveau de fonctionnalités: 0
PHP: 5.3.3-7+squeeze15
Server: Apache/2.2.16 (Debian)

Url sollicitée: /compta/facture/list.php
Referer: https://crm.enprod.net:7912/compta/index.php?mainmenu=accountancy&leftmenu=
Gestionnaire de menu: eldy_menu.php

Type gestionnaire de base de données: mysqli
Requête dernier accès en base en erreur: SELECT DISTINCT f.rowid as facid, f.facnumber, f.type, f.increment, f.total as total_ht, f.tva as total_tva, f.total_ttc, f.datef as df, f.date_lim_reglement as datelimite, f.ref_client, f.paye as paye, f.fk_statut, s.nom, s.rowid as socid FROM llx_societe as s, llx_facture as f LEFT JOIN llx_facturedet as fd ON fd.fk_facture = f.rowid WHERE f.fk_soc = s.rowid AND f.entity = 1 AND (s.nom LIKE ‹ %wifi% › OR f.facnumber LIKE ‹ %wifi% › OR f.note LIKE ‹ %wifi% › OR fd.description LIKE ‹ %wifi% ›) ORDER BY f.datef DESC, f.rowid DESC LIMIT 101
Code retour dernier accès en base en erreur: DB_ERROR_NOSUCHFIELD
Information sur le dernier accès en base en erreur: Unknown column ‹ f.note › in ‹ where clause ›

En fait, la requete cherche la valeur demandée dans un champ « note » qui n’existe pas dans les tables llx_facture et llx_propal concernées par la requête puisqu’ils se nomment « note_private » et « note_public »

Pour corriger dans les factures :
Editer le fichier htdocs/compta/factures/list.php
Modifier la ligne 222 pour obtenir :
$sql.= ’ AND (s.nom LIKE ‹ % ›.$db->escape($sall).’%’ OR f.facnumber LIKE ‹ % ›.$db->escape($sall).’%’ OR f.note_public LIKE ‹ % ›.$db->escape($sall).’%’ OR f.note_private LIKE ‹ % ›.$db->escape($sall).’%’ OR fd.description LIKE ‹ % ›.$db->escape($sall).’%’)’;

Faire de même dans les propals :
Editer le fichier htdocs/comm/propal/list.php
Modifier la ligne 170 pour obtenir :
if ($sall) $sql.= " AND (s.nom LIKE ‹ %".$db->escape($sall)."% › OR p.note_public LIKE ‹ %".$db->escape($sall)."% › OR p.note_private LIKE ‹ %".$db->escape($sall)."% › OR pd.description LIKE ‹ %".$db->escape($sall)."% ›)";

Bertrand

PS : Si qqun sait comment faire remonter la correction à FHenry ou tout au moins dans la prochaine version, je suis preneur. Ce bug existe depuis bien trop longtemps.

Merci pour la correction. La recherche pourrait également être faite sur la note privée?

Merci

Oui, il faut appliquer la même opération avec le champ f.note_private

Bertrand

1 « J'aime »

Merci Bertrand pour la solution.
Je viens d’ouvrir le cas #1205 sur Doliforge, pour qu’une solution définitive soit portée à ce bug.

Bonjour,

Merci pour l’ouverture de ce bug. C’est super quand des utilisateur prennent le temps d’utiliser les outils que l’on utilisent tout les jours.

Ceci dit ce bug était déjà corriger pour les prochaines versions (3.4.2 et 3.5).

Pour télécharger la dernière version (en attendant quelle soit packager) vous pouvez aller directement ici : https://github.com/FHenry/dolibarr/archive/3.4.zip

Cdt.

Merci à toi !