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

@ -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 = '&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
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 -->