prise en compte de différents champs nom et prénom
FossilOrigin-Name: 2895a7a5054d102c3262500e9e67557129592b607830a406d30fd3596cdfe6a9
This commit is contained in:
parent
5995f33efd
commit
a3aa6fa200
8 changed files with 271 additions and 108 deletions
|
|
@ -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);
|
||||
}
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue