Fin correction erreur (ticket be24e36cbf2a8ee61b4e430bce5f27936027824f)

FossilOrigin-Name: 86c4720a628e5c8e7fa7b3fe0a012686bb0367a16a1b6526188028a22458677d
This commit is contained in:
engel 2023-04-06 16:16:46 +00:00
parent 933465ba12
commit 65fc86e30c
2 changed files with 29 additions and 22 deletions

View File

@ -186,18 +186,17 @@ 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 $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
*/

View File

@ -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)