prise en compte de différents champs nom et prénom
FossilOrigin-Name: 2895a7a5054d102c3262500e9e67557129592b607830a406d30fd3596cdfe6a9
This commit is contained in:
parent
5995f33efd
commit
a3aa6fa200
|
@ -43,10 +43,12 @@ class Utils
|
|||
* @return versements correspondants à l'année et aux tarifs donnés
|
||||
* @param $annee
|
||||
* @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();
|
||||
$tri = Utils::combinerTri($champsNom);
|
||||
$sql = sprintf(
|
||||
'SELECT
|
||||
services_fees.id as idTarif,
|
||||
|
@ -65,21 +67,25 @@ class Utils
|
|||
services_fees.%s
|
||||
AND
|
||||
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"',
|
||||
$annee,
|
||||
$db->where('id', $tarifs));
|
||||
$db->where('id', $tarifs),
|
||||
$tri
|
||||
);
|
||||
return $db->get($sql);
|
||||
}
|
||||
|
||||
/**
|
||||
* Versements totaux par personne pour une année donné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 =
|
||||
"SELECT
|
||||
$tri = Utils::combinerTri($champsNom);
|
||||
$sql = sprintf(
|
||||
'SELECT
|
||||
membres.id as idUser,
|
||||
sum(acc_transactions_lines.credit) AS versement
|
||||
FROM
|
||||
|
@ -89,7 +95,7 @@ class Utils
|
|||
INNER JOIN acc_transactions_lines
|
||||
ON acc_transactions_lines.id_transaction = acc_transactions.id
|
||||
WHERE (
|
||||
strftime('%Y', acc_transactions.date) = ?
|
||||
strftime(%s, acc_transactions.date) = "%d"
|
||||
AND
|
||||
acc_transactions_lines.credit > 0
|
||||
AND
|
||||
|
@ -98,21 +104,55 @@ class Utils
|
|||
acc_transactions_users.id_user = membres.id
|
||||
)
|
||||
GROUP by acc_transactions_users.id_user
|
||||
ORDER by membres.nom COLLATE U_NOCASE;
|
||||
";
|
||||
return DB::getInstance()->get($sql, $annee);
|
||||
ORDER by %s COLLATE U_NOCASE',
|
||||
'"%Y"',
|
||||
$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
|
||||
* @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 =
|
||||
"SELECT
|
||||
membres.id as idUser,
|
||||
membres.nom as nom,
|
||||
" .
|
||||
$nom . "
|
||||
membres.adresse as adresse,
|
||||
membres.code_postal as codePostal,
|
||||
membres.ville as ville
|
||||
|
@ -132,7 +172,7 @@ class Utils
|
|||
acc_transactions_users.id_user = 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);
|
||||
}
|
||||
|
|
|
@ -13,47 +13,41 @@
|
|||
|
||||
<form method="post" action="{$self_url}" enctype="multipart/form-data">
|
||||
<fieldset>
|
||||
{*
|
||||
<legend>Objet (but) de l'association</legend>
|
||||
*}
|
||||
<dl class="config">
|
||||
<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}
|
||||
</dl>
|
||||
{*
|
||||
</fieldset>
|
||||
|
||||
<fieldset>
|
||||
<legend>Droit à la réduction d'impôt</legend>
|
||||
*}
|
||||
<dl class="config">
|
||||
<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>
|
||||
{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}
|
||||
*}
|
||||
<div>
|
||||
<input type="checkbox" name="articlesCGI[]" value="{$key}" class="choix"
|
||||
{if $article.valeur == 1}checked{/if}>
|
||||
<div>
|
||||
<input type="checkbox" name="articlesCGI[]" value="{$key}" class="choix"
|
||||
{if $article.valeur == 1}checked{/if}>
|
||||
<label>Article {$article.titre}</label>
|
||||
</div>
|
||||
</div>
|
||||
{/foreach}
|
||||
</dl>
|
||||
|
||||
<dl class="config">
|
||||
<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>
|
||||
{foreach from=$plugin_config->reduction key="key" item="taux"}
|
||||
<div>
|
||||
<input type="checkbox" name="tauxReduction[]" value="{$key}" class="choix"
|
||||
{if $taux.valeur == 1}checked{/if}>
|
||||
<label>Taux {$taux.taux}, ligne {$taux.ligne} de la déclaration
|
||||
{if $taux.remarque !== ""}({$taux.remarque})</label>{/if}
|
||||
</div>
|
||||
<div>
|
||||
<input type="checkbox" name="tauxReduction[]" value="{$key}" class="choix"
|
||||
{if $taux.valeur == 1}checked{/if}>
|
||||
<label>Taux {$taux.taux}, ligne {$taux.ligne} de la déclaration
|
||||
{if $taux.remarque !== ""}({$taux.remarque})</label>{/if}
|
||||
</div>
|
||||
{/foreach}
|
||||
</dl>
|
||||
</fieldset>
|
||||
|
@ -72,25 +66,42 @@
|
|||
|
||||
<dl class="config">
|
||||
<dt><label>Signature</label></dt>
|
||||
<p>L'image de la signature doit être d'une taille « raisonnable » et avoir un fond transparent</p>
|
||||
{if $plugin_config.signature != ''}
|
||||
<img id="signature" src="/{$plugin_config.signature}" />
|
||||
{else}
|
||||
<img id="signature" src="{$default_signature}" />
|
||||
{/if}
|
||||
{linkbutton shape="upload" label="Changer de signature" target="_dialog" href="upload.php?p=%s"|args:$path}
|
||||
<p>L'image de la signature doit être d'une taille « raisonnable » et avoir un fond transparent</p>
|
||||
{if $plugin_config.signature != ''}
|
||||
<img id="signature" src="/{$plugin_config.signature}" />
|
||||
{else}
|
||||
<img id="signature" src="{$default_signature}" />
|
||||
{/if}
|
||||
{linkbutton shape="upload" label="Changer de signature" target="_dialog" href="upload.php?p=%s"|args:$path}
|
||||
</dl>
|
||||
</fieldset>
|
||||
|
||||
<fieldset>
|
||||
<legend>Autres informations</legend>
|
||||
<dl class="config">
|
||||
<dl class="config">
|
||||
<dt><label>Ville</label></dt>
|
||||
<p>Précède la date sur le formulaire</p>
|
||||
{input type="text" name="ville_asso" source=$plugin.config label="" maxlength=50}
|
||||
</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>
|
||||
|
||||
|
@ -98,4 +109,26 @@
|
|||
{csrf_field key="recusfiscaux_config"}
|
||||
{button type="submit" name="save" label="Enregistrer" shape="right" class="main"}
|
||||
</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 = '↑';
|
||||
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}
|
|
@ -28,7 +28,8 @@
|
|||
Tous les versements des membres font l'objet d'un reçu, sans
|
||||
tenir compte des activités et tarifs
|
||||
</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>
|
||||
</label>
|
||||
</dd>
|
||||
|
@ -44,8 +45,8 @@
|
|||
</h5>
|
||||
<p>Choisissez cette option si vous voulez sélectionner :</p>
|
||||
<ul>
|
||||
<li>certaines activités ou certains tarifs</li>
|
||||
<li>certains versements de certaines personnes</li>
|
||||
<li>certaines activités ou certains tarifs</li>
|
||||
<li>certains versements de certaines personnes</li>
|
||||
</ul>
|
||||
</div>
|
||||
</label>
|
||||
|
@ -58,19 +59,20 @@
|
|||
<h2>Choisir le taux de réduction</h2>
|
||||
<fieldset>
|
||||
{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>
|
||||
{else}
|
||||
<h3 class="warning">Vous devez d'abord sélectionner au moins un taux de réduction dans l'onglet de
|
||||
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"}
|
||||
{if $reduc->valeur == 1}
|
||||
<span class="radio-btn">
|
||||
<input
|
||||
type="radio"
|
||||
id="{$reduc->taux}"
|
||||
name="taux_reduction"
|
||||
value="{$reduc->taux}"
|
||||
{if $nbTaux == 1}checked{/if}
|
||||
/>
|
||||
<label for="{$reduc->taux}">{$reduc->taux}{if $reduc->remarque != ""} - {$reduc->remarque}{/if}</label>
|
||||
<input type="radio" id="{$reduc->taux}" 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>
|
||||
{/if}
|
||||
{/foreach}
|
||||
|
@ -88,10 +90,13 @@
|
|||
<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>
|
||||
<fieldset>
|
||||
{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>
|
||||
{else}
|
||||
<table class="list">
|
||||
{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>
|
||||
{/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>
|
||||
<tr>
|
||||
<th>Cocher</th>
|
||||
|
@ -103,50 +108,47 @@
|
|||
</thead>
|
||||
<tbody>
|
||||
{foreach from=$activitesTarifsComptes item="activite"}
|
||||
<tr>
|
||||
<td>
|
||||
<tr>
|
||||
<td>
|
||||
{if $nbTarifs == 1}
|
||||
{input
|
||||
{input
|
||||
type="checkbox"
|
||||
name="tarifs[]"
|
||||
value=$activite.idTarif
|
||||
checked="checked"
|
||||
}
|
||||
{else}
|
||||
{input
|
||||
{input
|
||||
type="checkbox"
|
||||
name="tarifs[]"
|
||||
value=$activite.idTarif
|
||||
}
|
||||
{/if}
|
||||
</td>
|
||||
<td>
|
||||
<span>{$activite.titreActivite} - {$activite.titreTarif}</span>
|
||||
</td>
|
||||
<td>
|
||||
</td>
|
||||
<td>
|
||||
<span>{$activite.titreActivite} - {$activite.titreTarif}</span>
|
||||
</td>
|
||||
<td>
|
||||
{foreach from=$plugin_config->reduction item="reduc"}
|
||||
{if $reduc->valeur == 1}
|
||||
<span class="radio-btn">
|
||||
<input
|
||||
type="radio"
|
||||
id="taux_{$reduc->taux}_{$activite.idTarif}"
|
||||
name="taux_reduction_{$activite.idTarif}"
|
||||
value="{$reduc->taux}"
|
||||
{if $nbTarifs > 1}disabled{/if}
|
||||
{if $nbTaux == 1}checked{/if}
|
||||
/>
|
||||
<label for="taux_{$reduc->taux}_{$activite.idTarif}">{$reduc->taux}{if $reduc->remarque != ""} - {$reduc->remarque}{/if}</label>
|
||||
<input type="radio" id="taux_{$reduc->taux}_{$activite.idTarif}"
|
||||
name="taux_reduction_{$activite.idTarif}" value="{$reduc->taux}"
|
||||
{if $nbTarifs > 1}disabled{/if} {if $nbTaux == 1}checked{/if} />
|
||||
<label
|
||||
for="taux_{$reduc->taux}_{$activite.idTarif}">{$reduc->taux}{if $reduc->remarque != ""}
|
||||
- {$reduc->remarque}{/if}</label>
|
||||
</span>
|
||||
{/if}
|
||||
{/foreach}
|
||||
</td>
|
||||
<td>{if $activite.descActivite != ""}{$activite.descActivite} ; {/if}{$activite.descTarif}</td>
|
||||
<td>{$activite.numeroCpt} : {$activite.nomCpt}</td>
|
||||
</tr>
|
||||
</td>
|
||||
<td>{if $activite.descActivite != ""}{$activite.descActivite} ; {/if}{$activite.descTarif}</td>
|
||||
<td>{$activite.numeroCpt} : {$activite.nomCpt}</td>
|
||||
</tr>
|
||||
{/foreach}
|
||||
</tbody>
|
||||
</table>
|
||||
{/if}
|
||||
</table>
|
||||
{/if}
|
||||
</fieldset>
|
||||
</div>
|
||||
|
||||
|
@ -161,24 +163,24 @@
|
|||
<script type="text/javascript" src="script.js" defer="defer"></script>
|
||||
{literal}
|
||||
<script type="text/javascript">
|
||||
// activer/désactiver les radios des activités/tarifs
|
||||
for (var laCase of document.querySelectorAll("input[type=checkbox]")) {
|
||||
laCase.addEventListener('change', (evt) => {
|
||||
var idCase = evt.target;
|
||||
// chercher la ligne englobante (<tr>)
|
||||
var ligne = idCase.closest("tr");
|
||||
// itérer sur les radio de cette ligne
|
||||
var lesRadios = ligne.querySelectorAll('input[type=radio]');
|
||||
for (var idRadio of lesRadios) {
|
||||
if (idCase.checked) {
|
||||
idRadio.disabled = '';
|
||||
} else {
|
||||
idRadio.disabled = 'disabled';
|
||||
}
|
||||
// activer/désactiver les radios des activités/tarifs
|
||||
for (var laCase of document.querySelectorAll("input[type=checkbox]")) {
|
||||
laCase.addEventListener('change', (evt) => {
|
||||
var idCase = evt.target;
|
||||
// chercher la ligne englobante (<tr>)
|
||||
var ligne = idCase.closest("tr");
|
||||
// itérer sur les radio de cette ligne
|
||||
var lesRadios = ligne.querySelectorAll('input[type=radio]');
|
||||
for (var idRadio of lesRadios) {
|
||||
if (idCase.checked) {
|
||||
idRadio.disabled = '';
|
||||
} else {
|
||||
idRadio.disabled = 'disabled';
|
||||
}
|
||||
});
|
||||
}
|
||||
</script>
|
||||
}
|
||||
});
|
||||
}
|
||||
</script>
|
||||
{/literal}
|
||||
|
||||
<!-- footer -->
|
||||
|
|
|
@ -5,8 +5,27 @@ use Garradin\Files\Files;
|
|||
use Garradin\Entities\Files\File;
|
||||
|
||||
$session->requireAccess($session::SECTION_CONFIG, $session::ACCESS_ADMIN);
|
||||
$art_sel=f('articlesCGI') ? : [];
|
||||
$art_sel = f('articlesCGI') ? : [];
|
||||
$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;
|
||||
$context = Files::getContext($path);
|
||||
|
@ -63,6 +82,19 @@ if (f('save') && $form->check('recusfiscaux_config'))
|
|||
// ville
|
||||
$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');
|
||||
}
|
||||
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('path', $path);
|
||||
$tpl->assign('default_signature', \Garradin\WWW_URL . "plugin/recusfiscaux/default_signature.png");
|
||||
$tpl->assign('plugin_config', $plugin->getConfig());
|
||||
$tpl->assign('nomChamps', $nomChamps);
|
||||
$tpl->assign('plugin_css', ['style.css']);
|
||||
$tpl->display(PLUGIN_ROOT . '/templates/config.tpl');
|
||||
|
|
|
@ -13,6 +13,7 @@ if ($anneesFiscales[0] < $anneeCourante) {
|
|||
|
||||
// libellés pour les taux de réduction
|
||||
$_SESSION['ligneReduction'] = Utils::getLignesReduction($plugin->getConfig('reduction'));
|
||||
|
||||
// compter le nombre de taux de réduction activés
|
||||
$nbTaux = 0;
|
||||
foreach ($plugin->getConfig('reduction') as $taux)
|
||||
|
@ -20,6 +21,16 @@ foreach ($plugin->getConfig('reduction') as $taux)
|
|||
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
|
||||
$activitesTarifsComptes = Utils::getActivitesTarifsEtComptes();
|
||||
|
||||
|
@ -30,6 +41,7 @@ $tpl->assign('activitesTarifsComptes', $activitesTarifsComptes);
|
|||
$tpl->assign('nbTarifs', count($activitesTarifsComptes));
|
||||
$tpl->assign('plugin_config', $plugin->getConfig());
|
||||
$tpl->assign('nbTaux', $nbTaux);
|
||||
$tpl->assign('nbChamps', $nbChamps);
|
||||
$tpl->assign('plugin_css', ['style.css']);
|
||||
|
||||
// envoyer au template
|
||||
|
|
|
@ -39,3 +39,8 @@ div.explications ul
|
|||
{
|
||||
list-style : initial;
|
||||
}
|
||||
|
||||
div.actions
|
||||
{
|
||||
display : inline;
|
||||
}
|
||||
|
|
|
@ -12,6 +12,19 @@ $_SESSION['annee_recu'] = f('annee_recu');
|
|||
if (! isset($_SESSION['annee_recu']) || $_SESSION['annee_recu'] == "") {
|
||||
\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
|
||||
$tarifsSelectionnes = f('tarifs') ?: [];
|
||||
|
||||
|
@ -39,11 +52,14 @@ foreach (Utils::getActivites($tarifsSelectionnes) as $activite) {
|
|||
$_SESSION['lesActivites'] = $lesActivites;
|
||||
|
||||
// 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
|
||||
$versementsMembres = Utils::getDonateurs($_SESSION['annee_recu'],
|
||||
$champsNom);
|
||||
$membresDonateurs = array();
|
||||
$versementsMembres = Utils::getDonateurs($_SESSION['annee_recu']);
|
||||
foreach ($versementsMembres as $versement) {
|
||||
$membresDonateurs[$versement->idUser] = new Personne($versement->idUser,
|
||||
$versement->nom,
|
||||
|
|
|
@ -12,12 +12,27 @@ if (! isset($_SESSION['annee_recu']) || $_SESSION['annee_recu'] == "") {
|
|||
}
|
||||
$_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
|
||||
$_SESSION['lesVersementsTotaux'] = Utils::getVersementsTotaux($_SESSION['annee_recu']);
|
||||
$_SESSION['lesVersementsTotaux'] =
|
||||
Utils::getVersementsTotaux($_SESSION['annee_recu'],
|
||||
$champsNom);
|
||||
|
||||
// membres donateurs
|
||||
$versementsMembres = Utils::getDonateurs($_SESSION['annee_recu'],
|
||||
$champsNom);
|
||||
$membresDonateurs = array();
|
||||
$versementsMembres = Utils::getDonateurs($_SESSION['annee_recu']);
|
||||
foreach ($versementsMembres as $versement) {
|
||||
$membresDonateurs[$versement->idUser] = new Personne($versement->idUser,
|
||||
$versement->nom,
|
||||
|
|
Loading…
Reference in New Issue