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
|
* @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);
|
||||||
}
|
}
|
||||||
|
@ -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 = '↑';
|
||||||
|
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
|
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 -->
|
||||||
|
@ -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');
|
||||||
|
@ -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
|
||||||
|
@ -39,3 +39,8 @@ div.explications ul
|
|||||||
{
|
{
|
||||||
list-style : initial;
|
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'] == "") {
|
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,
|
||||||
|
@ -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,
|
||||||
|
Loading…
Reference in New Issue
Block a user