Liste de factures avec champs personnalisé

Suite à l’ajout d’un champs personnalisé dans le module facture « cf_facture_tx_penalite ». L’erreur SQL suivante apparaît dans "« compta/facture/list.php », le champ personnalisé faisant partie du SELECT il doit faire aussi partie du GROUP BY dans postgresql

 Dolibarr a détecté une erreur technique.
Voici les informations qui pourront aider au diagnostic:
Date: 20161006161351
Dolibarr: 4.0.1
Niveau de fonctionnalités: 0
PHP: 5.5.36
Server: Apache/2.4.18 (Unix) PHP/5.5.36
OS: Darwin iMac-de-Marie.local 15.6.0 Darwin Kernel Version 15.6.0: Mon Aug 29 20:21:34 PDT 2016; root:xnu-3248.60.11~1/RELEASE_X86_64 x86_64
UserAgent: Mozilla/5.0 (Macintosh; Intel Mac OS X 10_11_6) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/53.0.2785.143 Safari/537.36

Url sollicitée: /compta/facture/list.php?leftmenu=customers_bills
Referer: 
Gestionnaire de menu: eldy_menu.php

Type gestionnaire de base de données: pgsql
Requête dernier accès en base en erreur: SELECT f.rowid as facid, f.facnumber, f.ref_client, f.type, f.note_private, f.note_public, f.increment, f.fk_mode_reglement, f.total as total_ht, f.tva as total_vat, f.total_ttc, f.datef as df, f.date_lim_reglement as datelimite, f.paye as paye, f.fk_statut, f.datec as date_creation, f.tms as date_update, s.rowid as socid, s.nom as name, s.town, s.zip, s.fk_pays, s.client, s.code_client, typent.code as typent_code, state.code_departement as state_code, state.nom as state_name, SUM(pf.amount) as am,ef.cf_facture_tx_penalite as options_cf_facture_tx_penalite FROM fg_societe as s LEFT JOIN fg_c_country as country on (country.rowid = s.fk_pays) LEFT JOIN fg_c_typent as typent on (typent.id = s.fk_typent) LEFT JOIN fg_c_departements as state on (state.rowid = s.fk_departement), fg_facture as f LEFT JOIN fg_facture_extrafields as ef on (f.rowid = ef.fk_object) LEFT JOIN fg_paiement_facture as pf ON pf.fk_facture = f.rowid WHERE f.fk_soc = s.rowid AND f.entity = 1 GROUP BY f.rowid, f.facnumber, ref_client, f.type, f.note_private, f.note_public, f.increment, fk_mode_reglement, f.total, f.tva, f.total_ttc, f.datef, f.date_lim_reglement, f.paye, f.fk_statut, f.datec, f.tms, s.rowid, s.nom, s.town, s.zip, s.fk_pays, s.code_client, s.client, typent.code ,state.code_departement, state.nom ORDER BY f.datef DESC, f.rowid DESC LIMIT 26
Code retour dernier accès en base en erreur: DB_ERROR_42803
Information sur le dernier accès en base en erreur: ERROR: 42803: column "ef.cf_facture_tx_penalite" must appear in the GROUP BY clause or be used in an aggregate function LINE 1: ...de, state.nom as state_name, SUM(pf.amount) as am,ef.cf_fact... ^ LOCATION: check_ungrouped_columns_walker, parse_agg.c:1328

Bonsoir,
J’ai résolu ce problème en ajoutant les lignes suivantes au fichier compta/facture/list.php ligne 770 :
Je me suis inspiré de la partie SELECT

if (! $sall)
{
    $sql.= ' GROUP BY f.rowid, f.facnumber, ref_client, f.type, f.note_private, f.note_public, f.increment, fk_mode_reglement, f.total, f.tva, f.total_ttc,';
    $sql.= ' f.datef, f.date_lim_reglement,';
    $sql.= ' f.paye, f.fk_statut,';
    $sql.= ' f.datec, f.tms,';
    $sql.= ' s.rowid, s.nom, s.town, s.zip, s.fk_pays, s.code_client, s.client, typent.code';
    $sql.= ' ,state.code_departement, state.nom';
 // LIGNE 770 : Add fields from extrafields (specific to postgresql)
	foreach ($extrafields->attribute_label as $key => $val) {
		if ($extrafields->attribute_type[$key] != 'separate') {
			$sql.= ',ef.'.$key ;
		}
	}
}
else