From 65fc86e30c9be408fe8def687952c107d0438c04 Mon Sep 17 00:00:00 2001 From: engel <> Date: Thu, 6 Apr 2023 16:16:46 +0000 Subject: [PATCH] Fin correction erreur (ticket be24e36cbf2a8ee61b4e430bce5f27936027824f) FossilOrigin-Name: 86c4720a628e5c8e7fa7b3fe0a012686bb0367a16a1b6526188028a22458677d --- lib/Utils.php | 40 ++++++++++++++++++++---------- www/admin/versements_activites.php | 11 ++------ 2 files changed, 29 insertions(+), 22 deletions(-) diff --git a/lib/Utils.php b/lib/Utils.php index 416cfbf..103c144 100644 --- a/lib/Utils.php +++ b/lib/Utils.php @@ -185,19 +185,18 @@ class Utils /** * @return versements correspondants à : - * @param $annee : année fiscale - * @param $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 + * @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 * @remarks tri par tarif, nom, compte, date */ public static function getVersementsTarifsComptes($annee, - $tarifs, - $comptes, + $tarifsComptes, $champsNom) { $db = DB::getInstance(); $tri = Utils::combinerTri($champsNom); + $condition = Utils::combinerTarifsComptes($tarifsComptes); $sql = sprintf( 'SELECT services_fees.id as idTarif, @@ -220,17 +219,13 @@ class Utils INNER JOIN acc_accounts ON acc_transactions_lines.id_account = acc_accounts.id WHERE - (strftime(%s, acc_transactions.date) = "%d" + (strftime("%%Y", acc_transactions.date) = "%d" AND - services_fees.%s - AND - acc_accounts.%s + %s ) ORDER by services_fees.id, %s, acc_accounts.code, acc_transactions.date', - '"%Y"', $annee, - $db->where('id', 'in', $tarifs), - $db->where('id', 'in', $comptes), + $condition, $tri ); return $db->get($sql); @@ -371,6 +366,25 @@ class Utils return $tri; } + /** + * combiner chaque tarif avec le numéro de compte associé + */ + private static function combinerTarifsComptes($tarifsComptes) + { + $condition = '('; + $nb = 0; + foreach ($tarifsComptes as $elem) + { + $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')"; + ++$nb; + } + $condition .= ')'; + return $condition; + } + /** * @return liste des années fiscales */ diff --git a/www/admin/versements_activites.php b/www/admin/versements_activites.php index e98b0c3..9e8b5f2 100644 --- a/www/admin/versements_activites.php +++ b/www/admin/versements_activites.php @@ -55,18 +55,11 @@ if (isset($_SESSION['comptesSelectionnes'])) } $_SESSION['tauxSelectionnes'] = $tauxSelectionnes; -$lesTarifs = array_map(fn($elem) : string => - strpos($elem, '_') !== false ? substr($elem, 0, strpos($elem, '_')) : "", - array_keys($_SESSION['tauxSelectionnes'])); -$lesComptes = array_map(fn($elem) : string => - strpos($elem, '_') !== false ? substr($elem, 1 + strpos($elem, '_')) : "", - array_keys($_SESSION['tauxSelectionnes'])); - +# versements des tarifs sélectionnées et de leur compte associé $_SESSION['lesVersements'] = Utils::getVersementsTarifsComptes( $_SESSION['annee_recu'], - $lesTarifs, - $lesComptes, + array_keys($_SESSION['tauxSelectionnes']), $champsNom); // ajouter les versements sans tarif (tri par nom, compte, date)