diff --git a/lib/Utils.php b/lib/Utils.php
index 14e414d..0df1fb7 100644
--- a/lib/Utils.php
+++ b/lib/Utils.php
@@ -43,10 +43,12 @@ class Utils
* @return versements correspondants à l'année et aux tarifs donnés
* @param $annee
* @param array $tarifs
+ * @param array $champsNom : liste non vide des champs de nom/prénom
*/
- public static function getVersementsTarifs($annee, $tarifs)
+ public static function getVersementsTarifs($annee, $tarifs, $champsNom)
{
$db = DB::getInstance();
+ $tri = Utils::combinerTri($champsNom);
$sql = sprintf(
'SELECT
services_fees.id as idTarif,
@@ -65,21 +67,25 @@ class Utils
services_fees.%s
AND
acc_transactions_lines.credit > 0)
- ORDER by services_fees.id, membres.nom, acc_transactions.date',
+ ORDER by services_fees.id, %s, acc_transactions.date',
'"%Y"',
$annee,
- $db->where('id', $tarifs));
+ $db->where('id', $tarifs),
+ $tri
+ );
return $db->get($sql);
}
/**
* Versements totaux par personne pour une année donnée
* @param année
+ * @param array $champsNom : liste non vide des champs de nom/prénom
*/
- public static function getVersementsTotaux($annee)
+ public static function getVersementsTotaux($annee, $champsNom)
{
- $sql =
- "SELECT
+ $tri = Utils::combinerTri($champsNom);
+ $sql = sprintf(
+ 'SELECT
membres.id as idUser,
sum(acc_transactions_lines.credit) AS versement
FROM
@@ -89,7 +95,7 @@ class Utils
INNER JOIN acc_transactions_lines
ON acc_transactions_lines.id_transaction = acc_transactions.id
WHERE (
- strftime('%Y', acc_transactions.date) = ?
+ strftime(%s, acc_transactions.date) = "%d"
AND
acc_transactions_lines.credit > 0
AND
@@ -98,21 +104,55 @@ class Utils
acc_transactions_users.id_user = membres.id
)
GROUP by acc_transactions_users.id_user
- ORDER by membres.nom COLLATE U_NOCASE;
- ";
- return DB::getInstance()->get($sql, $annee);
+ ORDER by %s COLLATE U_NOCASE',
+ '"%Y"',
+ $annee,
+ $tri);
+ return DB::getInstance()->get($sql);
+ }
+
+ /**
+ * combiner les champs avec un opérateur
+ * @param array $champs : liste (non vide) de champs
+ * @return chaîne combinée
+ */
+ private static function combinerChamps($champs)
+ {
+ $op = ' || " " || ';
+ $result = 'ifnull(membres.' . $champs[0] . ', "")';
+ for ($i = 1; $i < count($champs); ++$i)
+ {
+ $result .= $op . 'ifnull(membres.' . $champs[$i] . ', "")';
+ }
+ return $result;
+ }
+
+ private static function combinerTri($champs)
+ {
+ $tri = 'membres.' . $champs[0];
+ for ($i = 1; $i < count($champs); ++$i)
+ {
+ $tri .= ', membres.' . $champs[$i];
+ }
+ return $tri;
}
/**
* @return personnes ayant versé des dons pour une année donnée
* @param $annee
+ * @param array $champsNom : champs qui définissent le nom et le prénom d'une personne
*/
- public static function getDonateurs($annee)
+ public static function getDonateurs($annee, $champsNom)
{
+ // concaténer les champs nom/prénoms pour la sélection
+ $nom = Utils::combinerChamps($champsNom) . ' as nom,';
+ // et pour le tri
+ $tri = Utils::combinerTri($champsNom);
$sql =
"SELECT
membres.id as idUser,
- membres.nom as nom,
+ " .
+ $nom . "
membres.adresse as adresse,
membres.code_postal as codePostal,
membres.ville as ville
@@ -132,7 +172,7 @@ class Utils
acc_transactions_users.id_user = membres.id
)
GROUP by membres.id
- ORDER by membres.nom COLLATE U_NOCASE;
+ ORDER by " . $tri . " COLLATE U_NOCASE
";
return DB::getInstance()->get($sql, $annee);
}
diff --git a/templates/config.tpl b/templates/config.tpl
index df61059..79029a4 100644
--- a/templates/config.tpl
+++ b/templates/config.tpl
@@ -13,47 +13,41 @@
\ No newline at end of file
+
+
+{literal}
+
+{/literal}
\ No newline at end of file
diff --git a/templates/index.tpl b/templates/index.tpl
index 97a05d9..356628d 100644
--- a/templates/index.tpl
+++ b/templates/index.tpl
@@ -28,7 +28,8 @@
Tous les versements des membres font l'objet d'un reçu, sans
tenir compte des activités et tarifs
-
Choisissez cette option si vous voulez sélectionner tous les versements d'une, plusieurs ou toutes les personnes
+
Choisissez cette option si vous voulez sélectionner tous les versements d'une, plusieurs
+ ou toutes les personnes
@@ -44,8 +45,8 @@
Choisissez cette option si vous voulez sélectionner :