diff --git a/lib/Utils.php b/lib/Utils.php index 103c144..fac6190 100644 --- a/lib/Utils.php +++ b/lib/Utils.php @@ -185,18 +185,20 @@ class Utils /** * @return versements correspondants à : - * @param $annee : année fiscale - * @param array $tarifsComptes : tarifs sélectionnés et comptes associés - * @param array $champsNom : liste non vide des champs de nom/prénom + * @param $annee : année fiscale + * @param array $tarifs : tarifs sélectionnés + * @param array $comptes : comptes associés aux tarifs + * @param array $champsNom : liste non vide des champs de nom/prénom * @remarks tri par tarif, nom, compte, date */ public static function getVersementsTarifsComptes($annee, - $tarifsComptes, + $tarifs, + $comptes, $champsNom) { $db = DB::getInstance(); $tri = Utils::combinerTri($champsNom); - $condition = Utils::combinerTarifsComptes($tarifsComptes); + $condition = Utils::combinerTarifsComptes($tarifs, $comptes); $sql = sprintf( 'SELECT services_fees.id as idTarif, @@ -369,16 +371,17 @@ class Utils /** * combiner chaque tarif avec le numéro de compte associé */ - private static function combinerTarifsComptes($tarifsComptes) + private static function combinerTarifsComptes($tarifs, $comptes) { $condition = '('; + $lesCond = array_map(fn($e1, $e2) : string => + "(services_fees.id = '$e1' AND acc_accounts.id = '$e2')", + $tarifs, $comptes); $nb = 0; - foreach ($tarifsComptes as $elem) + foreach ($lesCond as $cond) { - $tarif = substr($elem, 0, strpos($elem, '_')); - $compte = substr($elem, 1 + strpos($elem, '_')); if ($nb > 0) { $condition .= ' OR '; } - $condition .= "(services_fees.id = '$tarif' AND acc_accounts.id = '$compte')"; + $condition .= $cond; ++$nb; } $condition .= ')'; diff --git a/www/admin/versements_activites.php b/www/admin/versements_activites.php index 9e8b5f2..20aae12 100644 --- a/www/admin/versements_activites.php +++ b/www/admin/versements_activites.php @@ -55,11 +55,19 @@ if (isset($_SESSION['comptesSelectionnes'])) } $_SESSION['tauxSelectionnes'] = $tauxSelectionnes; +$lesTarifs = array_map(fn($elem) : string => + strpos($elem, '_') !== false ? substr($elem, 0, strpos($elem, '_')) : "", + $tarifsSelectionnes); +$lesComptes = array_map(fn($elem) : string => + strpos($elem, '_') !== false ? substr($elem, 1 + strpos($elem, '_')) : "", + $tarifsSelectionnes); + # versements des tarifs sélectionnées et de leur compte associé $_SESSION['lesVersements'] = Utils::getVersementsTarifsComptes( $_SESSION['annee_recu'], - array_keys($_SESSION['tauxSelectionnes']), + $lesTarifs, + $lesComptes, $champsNom); // ajouter les versements sans tarif (tri par nom, compte, date)