Fusion branche erreur

FossilOrigin-Name: 09ef8d69690d791cf31449295a4dcbfef62f018dcb059978cff8ffb499276c32
This commit is contained in:
engel 2023-04-06 16:19:56 +00:00
commit aa3b56d066
2 changed files with 43 additions and 30 deletions

View File

@ -185,19 +185,18 @@ class Utils
/** /**
* @return versements correspondants à : * @return versements correspondants à :
* @param $annee : année fiscale * @param $annee : année fiscale
* @param $tarifs : tarifs sélectionnés * @param array $tarifsComptes : tarifs sélectionnés et comptes associés
* @param array $comptes : comptes associés aux tarifs * @param array $champsNom : liste non vide des champs de nom/prénom
* @param array $champsNom : liste non vide des champs de nom/prénom
* @remarks tri par tarif, nom, compte, date * @remarks tri par tarif, nom, compte, date
*/ */
public static function getVersementsTarifsComptes($annee, public static function getVersementsTarifsComptes($annee,
$tarifs, $tarifsComptes,
$comptes,
$champsNom) $champsNom)
{ {
$db = DB::getInstance(); $db = DB::getInstance();
$tri = Utils::combinerTri($champsNom); $tri = Utils::combinerTri($champsNom);
$condition = Utils::combinerTarifsComptes($tarifsComptes);
$sql = sprintf( $sql = sprintf(
'SELECT 'SELECT
services_fees.id as idTarif, services_fees.id as idTarif,
@ -220,17 +219,13 @@ class Utils
INNER JOIN acc_accounts INNER JOIN acc_accounts
ON acc_transactions_lines.id_account = acc_accounts.id ON acc_transactions_lines.id_account = acc_accounts.id
WHERE WHERE
(strftime(%s, acc_transactions.date) = "%d" (strftime("%%Y", acc_transactions.date) = "%d"
AND AND
services_fees.%s %s
AND
acc_accounts.%s
) )
ORDER by services_fees.id, %s, acc_accounts.code, acc_transactions.date', ORDER by services_fees.id, %s, acc_accounts.code, acc_transactions.date',
'"%Y"',
$annee, $annee,
$db->where('id', 'in', $tarifs), $condition,
$db->where('id', 'in', $comptes),
$tri $tri
); );
return $db->get($sql); return $db->get($sql);
@ -371,6 +366,25 @@ class Utils
return $tri; 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 * @return liste des années fiscales
*/ */

View File

@ -36,43 +36,42 @@ else if (! isset($_SESSION['tauxSelectionnes'])) {
*/ */
// taux de réduction associés // taux de réduction associés
if (isset($tarifsSelectionnes) && isset($_SESSION['comptesSelectionnes'])) $tauxSelectionnes = array();
if (isset($tarifsSelectionnes))
{ {
$tauxSelectionnes = array();
foreach ($tarifsSelectionnes as $idTarif) foreach ($tarifsSelectionnes as $idTarif)
{ {
$nomRadio = "taux_reduction_" . $idTarif; $nomRadio = "taux_reduction_" . $idTarif;
$tauxSelectionnes[$idTarif] = f("$nomRadio"); $tauxSelectionnes[$idTarif] = f("$nomRadio");
} }
}
if (isset($_SESSION['comptesSelectionnes']))
{
foreach ($_SESSION['comptesSelectionnes'] as $idCompte) foreach ($_SESSION['comptesSelectionnes'] as $idCompte)
{ {
$nomRadio = "taux_reduction_" . $idCompte; $nomRadio = "taux_reduction_" . $idCompte;
$tauxSelectionnes[$idCompte] = f("$nomRadio"); $tauxSelectionnes[$idCompte] = f("$nomRadio");
} }
$_SESSION['tauxSelectionnes'] = $tauxSelectionnes;
} }
$_SESSION['tauxSelectionnes'] = $tauxSelectionnes;
$lesTarifs = array_map(fn($elem) : string => # versements des tarifs sélectionnées et de leur compte associé
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']));
$_SESSION['lesVersements'] = $_SESSION['lesVersements'] =
Utils::getVersementsTarifsComptes( Utils::getVersementsTarifsComptes(
$_SESSION['annee_recu'], $_SESSION['annee_recu'],
$lesTarifs, array_keys($_SESSION['tauxSelectionnes']),
$lesComptes,
$champsNom); $champsNom);
// ajouter les versements sans tarif (tri par nom, compte, date) // ajouter les versements sans tarif (tri par nom, compte, date)
$versementsSansTarif = Utils::getVersementsComptes($_SESSION['annee_recu'], if (isset($_SESSION['comptesSelectionnes']))
$_SESSION['comptesSelectionnes'],
$champsNom);
foreach ($versementsSansTarif as $versement)
{ {
$_SESSION['lesVersements'][] = $versement; $versementsSansTarif = Utils::getVersementsComptes($_SESSION['annee_recu'],
$_SESSION['comptesSelectionnes'],
$champsNom);
foreach ($versementsSansTarif as $versement)
{
$_SESSION['lesVersements'][] = $versement;
}
} }
// préparation de l'affichage // préparation de l'affichage
$tpl->assign('lesVersements', $_SESSION['lesVersements']); $tpl->assign('lesVersements', $_SESSION['lesVersements']);