prise en compte de différents champs nom et prénom

FossilOrigin-Name: 2895a7a5054d102c3262500e9e67557129592b607830a406d30fd3596cdfe6a9
This commit is contained in:
engel 2022-03-18 19:39:02 +00:00
parent 5995f33efd
commit a3aa6fa200
8 changed files with 271 additions and 108 deletions

View File

@ -43,10 +43,12 @@ class Utils
* @return versements correspondants à l'année et aux tarifs donnés * @return versements correspondants à l'année et aux tarifs donnés
* @param $annee * @param $annee
* @param array $tarifs * @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(); $db = DB::getInstance();
$tri = Utils::combinerTri($champsNom);
$sql = sprintf( $sql = sprintf(
'SELECT 'SELECT
services_fees.id as idTarif, services_fees.id as idTarif,
@ -65,21 +67,25 @@ class Utils
services_fees.%s services_fees.%s
AND AND
acc_transactions_lines.credit > 0) 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"', '"%Y"',
$annee, $annee,
$db->where('id', $tarifs)); $db->where('id', $tarifs),
$tri
);
return $db->get($sql); return $db->get($sql);
} }
/** /**
* Versements totaux par personne pour une année donnée * Versements totaux par personne pour une année donnée
* @param anné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 = $tri = Utils::combinerTri($champsNom);
"SELECT $sql = sprintf(
'SELECT
membres.id as idUser, membres.id as idUser,
sum(acc_transactions_lines.credit) AS versement sum(acc_transactions_lines.credit) AS versement
FROM FROM
@ -89,7 +95,7 @@ class Utils
INNER JOIN acc_transactions_lines INNER JOIN acc_transactions_lines
ON acc_transactions_lines.id_transaction = acc_transactions.id ON acc_transactions_lines.id_transaction = acc_transactions.id
WHERE ( WHERE (
strftime('%Y', acc_transactions.date) = ? strftime(%s, acc_transactions.date) = "%d"
AND AND
acc_transactions_lines.credit > 0 acc_transactions_lines.credit > 0
AND AND
@ -98,21 +104,55 @@ class Utils
acc_transactions_users.id_user = membres.id acc_transactions_users.id_user = membres.id
) )
GROUP by acc_transactions_users.id_user GROUP by acc_transactions_users.id_user
ORDER by membres.nom COLLATE U_NOCASE; ORDER by %s COLLATE U_NOCASE',
"; '"%Y"',
return DB::getInstance()->get($sql, $annee); $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 * @return personnes ayant versé des dons pour une année donnée
* @param $annee * @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 = $sql =
"SELECT "SELECT
membres.id as idUser, membres.id as idUser,
membres.nom as nom, " .
$nom . "
membres.adresse as adresse, membres.adresse as adresse,
membres.code_postal as codePostal, membres.code_postal as codePostal,
membres.ville as ville membres.ville as ville
@ -132,7 +172,7 @@ class Utils
acc_transactions_users.id_user = membres.id acc_transactions_users.id_user = membres.id
) )
GROUP by 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); return DB::getInstance()->get($sql, $annee);
} }

View File

@ -13,47 +13,41 @@
<form method="post" action="{$self_url}" enctype="multipart/form-data"> <form method="post" action="{$self_url}" enctype="multipart/form-data">
<fieldset> <fieldset>
{*
<legend>Objet (but) de l'association</legend>
*}
<dl class="config"> <dl class="config">
<dt><label>Objet (but) de l'association</label> <b title="Champ obligatoire">(obligatoire)</b></dt> <dt><label>Objet (but) de l'association</label> <b title="Champ obligatoire">(obligatoire)</b></dt>
{input type="textarea" name="objet_asso" source=$plugin.config label="" required="required" cols="50" rows="4" maxlength=300} {input type="textarea" name="objet_asso" source=$plugin.config label="" required="required" cols="50" rows="4" maxlength=300}
</dl> </dl>
{*
</fieldset>
<fieldset>
<legend>Droit à la réduction d'impôt</legend>
*}
<dl class="config"> <dl class="config">
<dt><label>Articles du code général des impôts concernés par l'association : </label> <dt><label>Articles du code général des impôts concernés par l'association : </label>
<b title="Champ obligatoire">(obligatoire ; sélectionnez tous les articles qui s'appliquent à l'asociation)</b> <b title="Champ obligatoire">(obligatoire ; sélectionnez tous les articles qui s'appliquent à
l'asociation)</b>
</dt> </dt>
{foreach from=$plugin_config->articlesCGI key="key" item="article"} {foreach from=$plugin_config->articlesCGI key="key" item="article"}
{* {*
À VÉRIFIER : {input : checked ne fonctionne pas si l'attribut name est un tableau... À VÉRIFIER : {input : checked ne fonctionne pas si l'attribut name est un tableau...
{input type="checkbox" name="articlesCGI[]" value=$key label=$article.titre} {input type="checkbox" name="articlesCGI[]" value=$key label=$article.titre}
*} *}
<div> <div>
<input type="checkbox" name="articlesCGI[]" value="{$key}" class="choix" <input type="checkbox" name="articlesCGI[]" value="{$key}" class="choix"
{if $article.valeur == 1}checked{/if}> {if $article.valeur == 1}checked{/if}>
<label>Article {$article.titre}</label> <label>Article {$article.titre}</label>
</div> </div>
{/foreach} {/foreach}
</dl> </dl>
<dl class="config"> <dl class="config">
<dt><label>Taux de réduction applicables : </label> <dt><label>Taux de réduction applicables : </label>
<b title="Champ obligatoire">(obligatoire ; sélectionnez tous les taux qui s'appliquent à l'asociation)</b> <b title="Champ obligatoire">(obligatoire ; sélectionnez tous les taux qui s'appliquent à
l'asociation)</b>
</dt> </dt>
{foreach from=$plugin_config->reduction key="key" item="taux"} {foreach from=$plugin_config->reduction key="key" item="taux"}
<div> <div>
<input type="checkbox" name="tauxReduction[]" value="{$key}" class="choix" <input type="checkbox" name="tauxReduction[]" value="{$key}" class="choix"
{if $taux.valeur == 1}checked{/if}> {if $taux.valeur == 1}checked{/if}>
<label>Taux {$taux.taux}, ligne {$taux.ligne} de la déclaration <label>Taux {$taux.taux}, ligne {$taux.ligne} de la déclaration
{if $taux.remarque !== ""}({$taux.remarque})</label>{/if} {if $taux.remarque !== ""}({$taux.remarque})</label>{/if}
</div> </div>
{/foreach} {/foreach}
</dl> </dl>
</fieldset> </fieldset>
@ -72,25 +66,42 @@
<dl class="config"> <dl class="config">
<dt><label>Signature</label></dt> <dt><label>Signature</label></dt>
<p>L'image de la signature doit être d'une taille « raisonnable » et avoir un fond transparent</p> <p>L'image de la signature doit être d'une taille « raisonnable » et avoir un fond transparent</p>
{if $plugin_config.signature != ''} {if $plugin_config.signature != ''}
<img id="signature" src="/{$plugin_config.signature}" /> <img id="signature" src="/{$plugin_config.signature}" />
{else} {else}
<img id="signature" src="{$default_signature}" /> <img id="signature" src="{$default_signature}" />
{/if} {/if}
{linkbutton shape="upload" label="Changer de signature" target="_dialog" href="upload.php?p=%s"|args:$path} {linkbutton shape="upload" label="Changer de signature" target="_dialog" href="upload.php?p=%s"|args:$path}
</dl> </dl>
</fieldset> </fieldset>
<fieldset> <fieldset>
<legend>Autres informations</legend> <legend>Autres informations</legend>
<dl class="config"> <dl class="config">
<dt><label>Ville</label></dt> <dt><label>Ville</label></dt>
<p>Précède la date sur le formulaire</p> <p>Précède la date sur le formulaire</p>
{input type="text" name="ville_asso" source=$plugin.config label="" maxlength=50} {input type="text" name="ville_asso" source=$plugin.config label="" maxlength=50}
</dl> </dl>
</fieldset>
{* les champs de nom *}
<?php $nbChamps = count($nomChamps); ?>
<dl class="config" {if $nbChamps == 1}hidden{/if}>
<dt><label>Champs nom et prénom</label></dt>
<p>Sélectionnez et classez le(s) champ(s) qui représente(nt) le nom et le prénom du donateur</p>
<div>
{foreach from=$nomChamps key="nom" item="champ"}
<div>
<input type="checkbox" name="champsNom[]" value={$nom} class="choix" {if $nbChamps == 1 || $champ.position != 0}checked{/if} >
<label>{$champ.titre}</label>
<div class="actions">
</div>
</div>
{/foreach}
</div>
</dl>
</fieldset>
<h3 class="warning">N'oubliez pas d'enregistrer, sinon les modifications ne seront pas prises en compte !</h3> <h3 class="warning">N'oubliez pas d'enregistrer, sinon les modifications ne seront pas prises en compte !</h3>
@ -98,4 +109,26 @@
{csrf_field key="recusfiscaux_config"} {csrf_field key="recusfiscaux_config"}
{button type="submit" name="save" label="Enregistrer" shape="right" class="main"} {button type="submit" name="save" label="Enregistrer" shape="right" class="main"}
</p> </p>
</form> </form>
{literal}
<script type="text/javascript">
(function() {
var lesDivs = document.querySelectorAll('.actions');
for (i = 0; i < lesDivs.length; ++i) {
var up = document.createElement('a');
up.className = 'icn up';
up.innerHTML = '&uarr;';
up.title = 'Déplacer vers le haut';
up.onclick = function(e) {
var field = this.parentNode.parentNode;
var p = field.previousSibling;
while (p != null && p.nodeType == 3) { p = p.previousSibling; }
field.parentNode.insertBefore(field, p);
return false;
};
lesDivs[i].appendChild(up);
}
}());
</script>
{/literal}

View File

@ -28,7 +28,8 @@
Tous les versements des membres font l'objet d'un reçu, sans Tous les versements des membres font l'objet d'un reçu, sans
tenir compte des activités et tarifs tenir compte des activités et tarifs
</h5> </h5>
<p>Choisissez cette option si vous voulez sélectionner tous les versements d'une, plusieurs ou toutes les personnes</p> <p>Choisissez cette option si vous voulez sélectionner tous les versements d'une, plusieurs
ou toutes les personnes</p>
</div> </div>
</label> </label>
</dd> </dd>
@ -44,8 +45,8 @@
</h5> </h5>
<p>Choisissez cette option si vous voulez sélectionner :</p> <p>Choisissez cette option si vous voulez sélectionner :</p>
<ul> <ul>
<li>certaines activités ou certains tarifs</li> <li>certaines activités ou certains tarifs</li>
<li>certains versements de certaines personnes</li> <li>certains versements de certaines personnes</li>
</ul> </ul>
</div> </div>
</label> </label>
@ -58,19 +59,20 @@
<h2>Choisir le taux de réduction</h2> <h2>Choisir le taux de réduction</h2>
<fieldset> <fieldset>
{if $nbTaux == 0} {if $nbTaux == 0}
<h3 class="warning">Vous devez d'abord sélectionner au moins un taux de réduction dans l'onglet de configuration</h3> <h3 class="warning">Vous devez d'abord sélectionner au moins un taux de réduction dans l'onglet de
{else} configuration</h3>
{/if}
{if $nbChamps == 0}
<h3 class="warning">Vous devez d'abord sélectionner au moins un champ pour le nom et le prénom dans l'onglet
de configuration</h3>
{/if}
{if $nbTaux > 0 && $nbChamps > 0}
{foreach from=$plugin_config->reduction item="reduc"} {foreach from=$plugin_config->reduction item="reduc"}
{if $reduc->valeur == 1} {if $reduc->valeur == 1}
<span class="radio-btn"> <span class="radio-btn">
<input <input type="radio" id="{$reduc->taux}" name="taux_reduction" value="{$reduc->taux}"
type="radio" {if $nbTaux == 1}checked{/if} />
id="{$reduc->taux}" <label for="{$reduc->taux}">{$reduc->taux}{if $reduc->remarque != ""} - {$reduc->remarque}{/if}</label>
name="taux_reduction"
value="{$reduc->taux}"
{if $nbTaux == 1}checked{/if}
/>
<label for="{$reduc->taux}">{$reduc->taux}{if $reduc->remarque != ""} - {$reduc->remarque}{/if}</label>
</span> </span>
{/if} {/if}
{/foreach} {/foreach}
@ -88,10 +90,13 @@
<div id="liste_activites_tarifs" class="activites hidden"> <div id="liste_activites_tarifs" class="activites hidden">
<h2>Choisir les activités et tarifs concernés par les reçus ainsi que le taux de réduction</h2> <h2>Choisir les activités et tarifs concernés par les reçus ainsi que le taux de réduction</h2>
<fieldset> <fieldset>
{if $nbTaux == 0} {if $nbTaux == 0}
<h3 class="warning">Vous devez d'abord sélectionner au moins un taux de réduction dans l'onglet de configuration</h3> <h3 class="warning">Vous devez d'abord sélectionner au moins un taux de réduction dans l'onglet de
{else} configuration</h3>
<table class="list"> {/if}
{if $nbChamps == 0}
<h3 class="warning">Vous devez d'abord sélectionner au moins un champ pour le nom et le prénom dans l'onglet
de configuration</h3 {/if} {if $nbTaux > 0 && $nbChamps > 0} <table class="list">
<thead> <thead>
<tr> <tr>
<th>Cocher</th> <th>Cocher</th>
@ -103,50 +108,47 @@
</thead> </thead>
<tbody> <tbody>
{foreach from=$activitesTarifsComptes item="activite"} {foreach from=$activitesTarifsComptes item="activite"}
<tr> <tr>
<td> <td>
{if $nbTarifs == 1} {if $nbTarifs == 1}
{input {input
type="checkbox" type="checkbox"
name="tarifs[]" name="tarifs[]"
value=$activite.idTarif value=$activite.idTarif
checked="checked" checked="checked"
} }
{else} {else}
{input {input
type="checkbox" type="checkbox"
name="tarifs[]" name="tarifs[]"
value=$activite.idTarif value=$activite.idTarif
} }
{/if} {/if}
</td> </td>
<td> <td>
<span>{$activite.titreActivite} - {$activite.titreTarif}</span> <span>{$activite.titreActivite} - {$activite.titreTarif}</span>
</td> </td>
<td> <td>
{foreach from=$plugin_config->reduction item="reduc"} {foreach from=$plugin_config->reduction item="reduc"}
{if $reduc->valeur == 1} {if $reduc->valeur == 1}
<span class="radio-btn"> <span class="radio-btn">
<input <input type="radio" id="taux_{$reduc->taux}_{$activite.idTarif}"
type="radio" name="taux_reduction_{$activite.idTarif}" value="{$reduc->taux}"
id="taux_{$reduc->taux}_{$activite.idTarif}" {if $nbTarifs > 1}disabled{/if} {if $nbTaux == 1}checked{/if} />
name="taux_reduction_{$activite.idTarif}" <label
value="{$reduc->taux}" for="taux_{$reduc->taux}_{$activite.idTarif}">{$reduc->taux}{if $reduc->remarque != ""}
{if $nbTarifs > 1}disabled{/if} - {$reduc->remarque}{/if}</label>
{if $nbTaux == 1}checked{/if}
/>
<label for="taux_{$reduc->taux}_{$activite.idTarif}">{$reduc->taux}{if $reduc->remarque != ""} - {$reduc->remarque}{/if}</label>
</span> </span>
{/if} {/if}
{/foreach} {/foreach}
</td> </td>
<td>{if $activite.descActivite != ""}{$activite.descActivite} ; {/if}{$activite.descTarif}</td> <td>{if $activite.descActivite != ""}{$activite.descActivite} ; {/if}{$activite.descTarif}</td>
<td>{$activite.numeroCpt} : {$activite.nomCpt}</td> <td>{$activite.numeroCpt} : {$activite.nomCpt}</td>
</tr> </tr>
{/foreach} {/foreach}
</tbody> </tbody>
</table> </table>
{/if} {/if}
</fieldset> </fieldset>
</div> </div>
@ -161,24 +163,24 @@
<script type="text/javascript" src="script.js" defer="defer"></script> <script type="text/javascript" src="script.js" defer="defer"></script>
{literal} {literal}
<script type="text/javascript"> <script type="text/javascript">
// activer/désactiver les radios des activités/tarifs // activer/désactiver les radios des activités/tarifs
for (var laCase of document.querySelectorAll("input[type=checkbox]")) { for (var laCase of document.querySelectorAll("input[type=checkbox]")) {
laCase.addEventListener('change', (evt) => { laCase.addEventListener('change', (evt) => {
var idCase = evt.target; var idCase = evt.target;
// chercher la ligne englobante (<tr>) // chercher la ligne englobante (<tr>)
var ligne = idCase.closest("tr"); var ligne = idCase.closest("tr");
// itérer sur les radio de cette ligne // itérer sur les radio de cette ligne
var lesRadios = ligne.querySelectorAll('input[type=radio]'); var lesRadios = ligne.querySelectorAll('input[type=radio]');
for (var idRadio of lesRadios) { for (var idRadio of lesRadios) {
if (idCase.checked) { if (idCase.checked) {
idRadio.disabled = ''; idRadio.disabled = '';
} else { } else {
idRadio.disabled = 'disabled'; idRadio.disabled = 'disabled';
}
} }
}); }
} });
</script> }
</script>
{/literal} {/literal}
<!-- footer --> <!-- footer -->

View File

@ -5,8 +5,27 @@ use Garradin\Files\Files;
use Garradin\Entities\Files\File; use Garradin\Entities\Files\File;
$session->requireAccess($session::SECTION_CONFIG, $session::ACCESS_ADMIN); $session->requireAccess($session::SECTION_CONFIG, $session::ACCESS_ADMIN);
$art_sel=f('articlesCGI') ? : []; $art_sel = f('articlesCGI') ? : [];
$taux_sel = f('tauxReduction') ? : []; $taux_sel = f('tauxReduction') ? : [];
$noms_sel = f('champsNom') ? : [];
$confNoms = $plugin->getConfig('nomChamps');
if (! isset($confNoms))
{
// récupérer les champs des membres utilisés pour le nom et le prénom
$nomChamps = array();
foreach ($config->get('champs_membres')->listAssocNames() as $name => $title)
{
if (stristr($title, 'nom'))
{
$champ = new \stdClass();
$champ->titre = $title;
$champ->position = 0;
$nomChamps[$name] = $champ;
}
}
$plugin->setConfig('nomChamps', $nomChamps);
}
$path = qg('path') ?: File::CONTEXT_CONFIG; $path = qg('path') ?: File::CONTEXT_CONFIG;
$context = Files::getContext($path); $context = Files::getContext($path);
@ -63,6 +82,19 @@ if (f('save') && $form->check('recusfiscaux_config'))
// ville // ville
$plugin->setConfig('ville_asso', trim(f('ville_asso'))); $plugin->setConfig('ville_asso', trim(f('ville_asso')));
// champs pour le nom et prénom
$confNoms = (array)$plugin->getConfig('nomChamps');
foreach ($confNoms as $nom => $champ)
{
$champ->position = 0;
}
$i = -count($noms_sel);
foreach ($noms_sel as $nom)
{
$confNoms[$nom]->position = $i++;
}
$plugin->setConfig('nomChamps', $confNoms);
\Garradin\Utils::redirect(PLUGIN_URL . 'config.php?ok'); \Garradin\Utils::redirect(PLUGIN_URL . 'config.php?ok');
} }
catch (UserException $e) catch (UserException $e)
@ -71,9 +103,17 @@ if (f('save') && $form->check('recusfiscaux_config'))
} }
} }
// trier les champs de nom pour l'affichage
$nomChamps = (array) $plugin->getConfig('nomChamps');
uasort($nomChamps, function ($a, $b)
{
return $a->position - $b->position;
});
$tpl->assign('ok', qg('ok') !== null); $tpl->assign('ok', qg('ok') !== null);
$tpl->assign('path', $path); $tpl->assign('path', $path);
$tpl->assign('default_signature', \Garradin\WWW_URL . "plugin/recusfiscaux/default_signature.png"); $tpl->assign('default_signature', \Garradin\WWW_URL . "plugin/recusfiscaux/default_signature.png");
$tpl->assign('plugin_config', $plugin->getConfig()); $tpl->assign('plugin_config', $plugin->getConfig());
$tpl->assign('nomChamps', $nomChamps);
$tpl->assign('plugin_css', ['style.css']); $tpl->assign('plugin_css', ['style.css']);
$tpl->display(PLUGIN_ROOT . '/templates/config.tpl'); $tpl->display(PLUGIN_ROOT . '/templates/config.tpl');

View File

@ -13,6 +13,7 @@ if ($anneesFiscales[0] < $anneeCourante) {
// libellés pour les taux de réduction // libellés pour les taux de réduction
$_SESSION['ligneReduction'] = Utils::getLignesReduction($plugin->getConfig('reduction')); $_SESSION['ligneReduction'] = Utils::getLignesReduction($plugin->getConfig('reduction'));
// compter le nombre de taux de réduction activés // compter le nombre de taux de réduction activés
$nbTaux = 0; $nbTaux = 0;
foreach ($plugin->getConfig('reduction') as $taux) foreach ($plugin->getConfig('reduction') as $taux)
@ -20,6 +21,16 @@ foreach ($plugin->getConfig('reduction') as $taux)
if ($taux->valeur == 1) { ++$nbTaux; } if ($taux->valeur == 1) { ++$nbTaux; }
} }
// idem avec les champs nom/prénom
$nbChamps = 0;
if (null !== $plugin->getConfig('nomChamps'))
{
foreach ($plugin->getConfig('nomChamps') as $nom => $champ)
{
if ($champ->position != 0) { ++$nbChamps; }
}
}
// liste des activités, cotisations et comptes associés // liste des activités, cotisations et comptes associés
$activitesTarifsComptes = Utils::getActivitesTarifsEtComptes(); $activitesTarifsComptes = Utils::getActivitesTarifsEtComptes();
@ -30,6 +41,7 @@ $tpl->assign('activitesTarifsComptes', $activitesTarifsComptes);
$tpl->assign('nbTarifs', count($activitesTarifsComptes)); $tpl->assign('nbTarifs', count($activitesTarifsComptes));
$tpl->assign('plugin_config', $plugin->getConfig()); $tpl->assign('plugin_config', $plugin->getConfig());
$tpl->assign('nbTaux', $nbTaux); $tpl->assign('nbTaux', $nbTaux);
$tpl->assign('nbChamps', $nbChamps);
$tpl->assign('plugin_css', ['style.css']); $tpl->assign('plugin_css', ['style.css']);
// envoyer au template // envoyer au template

View File

@ -39,3 +39,8 @@ div.explications ul
{ {
list-style : initial; list-style : initial;
} }
div.actions
{
display : inline;
}

View File

@ -12,6 +12,19 @@ $_SESSION['annee_recu'] = f('annee_recu');
if (! isset($_SESSION['annee_recu']) || $_SESSION['annee_recu'] == "") { if (! isset($_SESSION['annee_recu']) || $_SESSION['annee_recu'] == "") {
\Garradin\Utils::redirect(PLUGIN_URL . 'index.php'); \Garradin\Utils::redirect(PLUGIN_URL . 'index.php');
} }
// champs pour le nom et prénom
$confNoms = (array) $plugin->getConfig('nomChamps');
uasort($confNoms, function ($a, $b)
{
return $a->position - $b->position;
});
$champsNom = array();
foreach ($confNoms as $nom => $champ)
{
if ($champ->position != 0) { $champsNom[] = $nom; }
}
// récupérer les infos du formulaire // récupérer les infos du formulaire
$tarifsSelectionnes = f('tarifs') ?: []; $tarifsSelectionnes = f('tarifs') ?: [];
@ -39,11 +52,14 @@ foreach (Utils::getActivites($tarifsSelectionnes) as $activite) {
$_SESSION['lesActivites'] = $lesActivites; $_SESSION['lesActivites'] = $lesActivites;
// versements correspondants aux tarifs sélectionnés // versements correspondants aux tarifs sélectionnés
$_SESSION['lesVersements'] = Utils::getVersementsTarifs($_SESSION['annee_recu'], $tarifsSelectionnes); $_SESSION['lesVersements'] = Utils::getVersementsTarifs($_SESSION['annee_recu'],
$tarifsSelectionnes,
$champsNom);
// membres donateurs // membres donateurs
$versementsMembres = Utils::getDonateurs($_SESSION['annee_recu'],
$champsNom);
$membresDonateurs = array(); $membresDonateurs = array();
$versementsMembres = Utils::getDonateurs($_SESSION['annee_recu']);
foreach ($versementsMembres as $versement) { foreach ($versementsMembres as $versement) {
$membresDonateurs[$versement->idUser] = new Personne($versement->idUser, $membresDonateurs[$versement->idUser] = new Personne($versement->idUser,
$versement->nom, $versement->nom,

View File

@ -12,12 +12,27 @@ if (! isset($_SESSION['annee_recu']) || $_SESSION['annee_recu'] == "") {
} }
$_SESSION['taux_reduction'] = $_POST['taux_reduction']; $_SESSION['taux_reduction'] = $_POST['taux_reduction'];
// champs pour le nom et prénom
$confNoms = (array) $plugin->getConfig('nomChamps');
uasort($confNoms, function ($a, $b)
{
return $a->position - $b->position;
});
$champsNom = array();
foreach ($confNoms as $nom => $champ)
{
if ($champ->position != 0) { $champsNom[] = $nom; }
}
// versements totaux par personne // versements totaux par personne
$_SESSION['lesVersementsTotaux'] = Utils::getVersementsTotaux($_SESSION['annee_recu']); $_SESSION['lesVersementsTotaux'] =
Utils::getVersementsTotaux($_SESSION['annee_recu'],
$champsNom);
// membres donateurs // membres donateurs
$versementsMembres = Utils::getDonateurs($_SESSION['annee_recu'],
$champsNom);
$membresDonateurs = array(); $membresDonateurs = array();
$versementsMembres = Utils::getDonateurs($_SESSION['annee_recu']);
foreach ($versementsMembres as $versement) { foreach ($versementsMembres as $versement) {
$membresDonateurs[$versement->idUser] = new Personne($versement->idUser, $membresDonateurs[$versement->idUser] = new Personne($versement->idUser,
$versement->nom, $versement->nom,