harmonisation présentation personnes-activités
FossilOrigin-Name: 53550421b288837f1c2120259c638952fdf2853441a1315359d7af51c57c80d8
This commit is contained in:
parent
2fddc192f9
commit
328789b923
@ -3,17 +3,18 @@
|
||||
|
||||
<h2>Versements par activité et tarif</h2>
|
||||
|
||||
<div class="year-header noprint">
|
||||
<button type="button" data-icon="↓" class="icn-btn" id="open_details">Déplier toutes les activités</button>
|
||||
<button type="button" data-icon="↑" class="icn-btn" id="close_details">Replier toutes les activités</button>
|
||||
</div>
|
||||
|
||||
<form method="post" id="versements_activites" action="generer_activites.php">
|
||||
|
||||
<fieldset class="versements" id="versements_global">
|
||||
<fieldset class="noprint">
|
||||
{* <div class="noprint"> *}
|
||||
<input type="checkbox" class="check_global" id="check_global" onclick="cocherDecocherTout(check_global)" />
|
||||
<label for="check_global">Cliquer pour cocher toutes les lignes</label>
|
||||
</fieldset>
|
||||
<button type="button" data-icon="↑" class="icn-btn" id="close_details_activite">Replier toutes les activités</button>
|
||||
<button type="button" data-icon="↓" class="icn-btn" id="open_details_activite">Déplier toutes les activités</button>
|
||||
<button type="button" data-icon="↑" class="icn-btn" id="close_details_personne">Replier toutes les personnes</button>
|
||||
<button type="button" data-icon="↓" class="icn-btn" id="open_details_personne">Déplier toutes les personnes</button>
|
||||
{* </div> *}
|
||||
</fieldset>
|
||||
|
||||
<form method="post" id="versements_activites" action="generer_activites.php">
|
||||
|
||||
{* Itération sur les versements *}
|
||||
{foreach from=$lesVersements key="i" item="versement"}
|
||||
@ -31,7 +32,8 @@
|
||||
{if $versement.idTarif != $tarifCourant}
|
||||
{* changement de tarif *}
|
||||
</fieldset> {* fin versements d'une personne *}
|
||||
</details>
|
||||
</details> {* fin versements d'une personne *}
|
||||
</details> {* fin tarif *}
|
||||
<?php
|
||||
$tarifCourant = $versement->idTarif;
|
||||
$personneCourante = $versement->idUser;
|
||||
@ -42,6 +44,7 @@
|
||||
{elseif $versement.idUser != $personneCourante}
|
||||
{* changement de personne *}
|
||||
</fieldset>
|
||||
</details>
|
||||
<?php
|
||||
$personneCourante = $versement->idUser;
|
||||
?>
|
||||
@ -53,8 +56,9 @@
|
||||
{/if}
|
||||
{/if}
|
||||
{/foreach} {* Itération sur les versements *}
|
||||
</fieldset>
|
||||
</details>
|
||||
</fieldset> {* fin versements d'une personne *}
|
||||
</details> {* fin versements d'une personne *}
|
||||
</details> {* fin tarif *}
|
||||
|
||||
<input type="submit" value="Générer les reçus" onclick="return verifierChoix(this.form)">
|
||||
</form>
|
||||
@ -64,14 +68,25 @@
|
||||
|
||||
{literal}
|
||||
<script type="text/javascript">
|
||||
// ouvrir/fermer les détails
|
||||
document.querySelector('#open_details').onclick = () => {
|
||||
document.querySelectorAll('details').forEach((e) => {
|
||||
// ouvrir/fermer les détails des activités
|
||||
document.querySelector('#open_details_activite').onclick = () => {
|
||||
document.querySelectorAll('details.activite').forEach((e) => {
|
||||
e.setAttribute('open', 'open');
|
||||
});
|
||||
};
|
||||
document.querySelector('#close_details').onclick = () => {
|
||||
document.querySelectorAll('details').forEach((e) => {
|
||||
document.querySelector('#close_details_activite').onclick = () => {
|
||||
document.querySelectorAll('details.activite').forEach((e) => {
|
||||
e.removeAttribute('open');
|
||||
});
|
||||
};
|
||||
// ouvrir/fermer les détails des personnes
|
||||
document.querySelector('#open_details_personne').onclick = () => {
|
||||
document.querySelectorAll('details.personne').forEach((e) => {
|
||||
e.setAttribute('open', 'open');
|
||||
});
|
||||
};
|
||||
document.querySelector('#close_details_personne').onclick = () => {
|
||||
document.querySelectorAll('details.personne').forEach((e) => {
|
||||
e.removeAttribute('open');
|
||||
});
|
||||
};
|
||||
|
@ -3,27 +3,33 @@
|
||||
|
||||
<h2>Versements par personne</h2>
|
||||
|
||||
<form method="post" id="versements_personnes" action="generer_personnes.php">
|
||||
|
||||
<fieldset class="versements" id="versements_global">
|
||||
<input type="checkbox" class="check_global" id="check_global" onclick="cocherDecocherToutesLesPersonnes(this.form, check_global)" />
|
||||
<fieldset class="noprint">
|
||||
{* <div class="noprint"> *}
|
||||
<input type="checkbox" class="check_global" id="check_global"
|
||||
onclick="cocherDecocherToutesLesPersonnes(check_global)" />
|
||||
<label for="check_global">Cliquer pour cocher toutes les lignes</label>
|
||||
</fieldset>
|
||||
<button type="button" data-icon="↑" class="icn-btn" id="close_details_personne">Replier toutes les personnes</button>
|
||||
<button type="button" data-icon="↓" class="icn-btn" id="open_details_personne">Déplier toutes les personnes</button>
|
||||
{* </div> *}
|
||||
</fieldset>
|
||||
|
||||
<form method="post" id="versements_personnes" action="generer_personnes.php">
|
||||
|
||||
{* Itération sur les personnes *}
|
||||
{foreach from=$lesVersements key="i" item="versement"}
|
||||
{if $i == 0}
|
||||
{* 1ère personne *}
|
||||
<?php
|
||||
$personneCourante = $versement->idUser;
|
||||
$personneCourante = $versement->idUser;
|
||||
?>
|
||||
{afficher_debut_personne versement=$versement}
|
||||
{afficher_versement versement=$versement rang=$i}
|
||||
{elseif $versement.idUser != $personneCourante}
|
||||
{* changement de personne *}
|
||||
</fieldset>
|
||||
</details>
|
||||
<?php
|
||||
$personneCourante = $versement->idUser;
|
||||
$personneCourante = $versement->idUser;
|
||||
?>
|
||||
{afficher_debut_personne versement=$versement}
|
||||
{afficher_versement versement=$versement rang=$i}
|
||||
@ -33,6 +39,7 @@
|
||||
{/if}
|
||||
{/foreach} {* Itération sur les personnes *}
|
||||
</fieldset>
|
||||
</details>
|
||||
|
||||
<input type="submit" value="Générer les reçus" onclick="return verifierChoix(this.form)">
|
||||
</form>
|
||||
@ -40,5 +47,21 @@
|
||||
{* scripts pour cases à cocher *}
|
||||
<script src="script.js"></script>
|
||||
|
||||
{literal}
|
||||
<script type="text/javascript">
|
||||
// ouvrir/fermer les détails
|
||||
document.querySelector('#open_details_personne').onclick = () => {
|
||||
document.querySelectorAll('details.personne').forEach((e) => {
|
||||
e.setAttribute('open', 'open');
|
||||
});
|
||||
};
|
||||
document.querySelector('#close_details_personne').onclick = () => {
|
||||
document.querySelectorAll('details.personne').forEach((e) => {
|
||||
e.removeAttribute('open');
|
||||
});
|
||||
};
|
||||
</script>
|
||||
{/literal}
|
||||
|
||||
<!-- footer -->
|
||||
{include file="admin/_foot.tpl"}
|
||||
{include file="admin/_foot.tpl"}
|
@ -5,14 +5,12 @@
|
||||
*/
|
||||
function cocherDecocherTout(idCaseGlobale)
|
||||
{
|
||||
// chercher le formulaire englobant
|
||||
var formulaire = idCaseGlobale.closest("form");
|
||||
// itérer sur la liste des éléments détails : 1 par couple <activité, tarif>
|
||||
var lesDetails = formulaire.querySelectorAll("details");
|
||||
var lesDetails = document.querySelectorAll("details.activite");
|
||||
for (var i = 0; i < lesDetails.length; ++i)
|
||||
{
|
||||
// itérer sur les personnes
|
||||
var lesH3 = lesDetails[i].querySelectorAll("h3.personne");
|
||||
var lesH3 = lesDetails[i].querySelectorAll("h4.personne");
|
||||
cocherDecocherLesPersonnes(idCaseGlobale, lesH3);
|
||||
}
|
||||
// changer le message
|
||||
@ -22,9 +20,9 @@ function cocherDecocherTout(idCaseGlobale)
|
||||
/**
|
||||
* idem dans le cas des versements des personnes
|
||||
*/
|
||||
function cocherDecocherToutesLesPersonnes(formulaire, idCaseGlobale)
|
||||
function cocherDecocherToutesLesPersonnes(idCaseGlobale)
|
||||
{
|
||||
var lesH3 = formulaire.querySelectorAll("h3.personne");
|
||||
var lesH3 = document.querySelectorAll("h4.personne");
|
||||
cocherDecocherLesPersonnes(idCaseGlobale, lesH3);
|
||||
changerMessage(idCaseGlobale.nextElementSibling, idCaseGlobale);
|
||||
}
|
||||
@ -36,11 +34,11 @@ function cocherDecocherLesPersonnes(idCaseGlobale, lesPersonnes)
|
||||
// trouver l'élément total de la personne
|
||||
var idTotal = lesPersonnes[j].querySelector("span");
|
||||
// puis la case à cocher
|
||||
var fieldset = lesPersonnes[j].nextElementSibling;
|
||||
var fieldset = lesPersonnes[j].closest("details").querySelector("fieldset");
|
||||
var idCase = fieldset.querySelector("input");
|
||||
idCase.checked = idCaseGlobale.checked;
|
||||
// puis traiter toutes les cases de la personne
|
||||
cocherDecocherPersonne(idCase, idTotal);
|
||||
cocherDecocherPersonne(idCase, idTotal, false);
|
||||
}
|
||||
}
|
||||
|
||||
@ -51,13 +49,14 @@ function cocherDecocherLesPersonnes(idCaseGlobale, lesPersonnes)
|
||||
*
|
||||
* @param id de la case qui a été cochée
|
||||
* @param id de l'élément où afficher le total
|
||||
* @param changerMessage : vrai, s'il faut changer le message de la personne
|
||||
*/
|
||||
function cocherDecocherPersonne(idCase, idTotal)
|
||||
function cocherDecocherPersonne(idCase, idTotal, changerMessage = true)
|
||||
{
|
||||
// chercher le fieldset englobant
|
||||
var fieldset = idCase.closest("fieldset");
|
||||
// chercher le fieldset des versements
|
||||
var fieldset = idCase.closest("details").querySelector("fieldset");
|
||||
var listeCases = fieldset.querySelectorAll("input[type=checkbox]");
|
||||
for (var i = 1; i < listeCases.length; ++i)
|
||||
for (var i = 0; i < listeCases.length; ++i)
|
||||
{
|
||||
listeCases[i].checked = idCase.checked;
|
||||
}
|
||||
@ -65,13 +64,12 @@ function cocherDecocherPersonne(idCase, idTotal)
|
||||
var listeMontants = fieldset.querySelectorAll("span.montant");
|
||||
calculerTotal(listeCases, listeMontants, idTotal);
|
||||
// changer le message
|
||||
changerMessage(idCase.nextElementSibling, idCase);
|
||||
if (changerMessage) { changerMessage(idCase.nextElementSibling, idCase); }
|
||||
}
|
||||
|
||||
/**
|
||||
* Fonction appelée quand on (dé)coche la case d'un versement
|
||||
* - (dé)sélectionner cette case (?)
|
||||
* - faire le total des cases cochées et l'afficher
|
||||
* Faire le total des cases cochées et l'afficher
|
||||
*
|
||||
* @param id de la case qui a été cochée
|
||||
* @param id de l'élément où afficher le total
|
||||
|
@ -25,8 +25,8 @@ span.montant {
|
||||
summary.activite {
|
||||
background: rgba(var(--gMainColor), 0.25);
|
||||
}
|
||||
h3.personne {
|
||||
background: rgba(var(--gSecondColor), 0.35);
|
||||
h3.personne, h4.personne {
|
||||
background: rgba(var(--gSecondColor), 0.15);
|
||||
}
|
||||
#signature
|
||||
{
|
||||
@ -48,3 +48,7 @@ div.actions
|
||||
{
|
||||
display : inline;
|
||||
}
|
||||
input.check_global
|
||||
{
|
||||
margin : 0.2em 0.5em;
|
||||
}
|
||||
|
@ -14,7 +14,7 @@ if (! isset($_SESSION['annee_recu']) || $_SESSION['annee_recu'] == "") {
|
||||
}
|
||||
|
||||
// champs pour le nom et prénom
|
||||
$confNoms = (array) $plugin->getConfig('nomChamps');
|
||||
$confNoms = Utils::getChampsNom($config, $plugin);
|
||||
uasort($confNoms, function ($a, $b)
|
||||
{
|
||||
return $a->position - $b->position;
|
||||
@ -71,7 +71,7 @@ $tpl->register_function('afficher_debut_tarif', function ($params)
|
||||
$idActivite = $tarif->idActivite;
|
||||
$activite = $_SESSION['lesActivites'][$idActivite];
|
||||
|
||||
$out = '<details open="open">
|
||||
$out = '<details class="activite" open="open">
|
||||
<summary class="activite">';
|
||||
$out .= sprintf('
|
||||
<h3>Activité « %s »</h3>', $activite->label);
|
||||
@ -91,22 +91,24 @@ $tpl->register_function('afficher_debut_tarif', function ($params)
|
||||
return $out;
|
||||
});
|
||||
|
||||
// afficher les informations d'une personne
|
||||
// Afficher les informations d'une personne
|
||||
$tpl->register_function('afficher_debut_personne', function ($params)
|
||||
{
|
||||
$versement = $params['versement'];
|
||||
$idUser = $versement->idUser;
|
||||
$personne = $_SESSION['membresDonateurs'][$idUser];
|
||||
$idVersement = $versement->idTarif . "_" . $versement->idUser;
|
||||
$out = sprintf('<h3 class="personne">Versements de %s : <span id="total_%s">0,00 €</span></h3>',
|
||||
$out = '<details class="personne" open="open">
|
||||
<summary class="personne">';
|
||||
$out .= sprintf('<h4 class="personne">Versements de %s : <span id="total_%s">0,00 €</span></h>',
|
||||
$personne->nomPrenom,
|
||||
$idVersement);
|
||||
$out .= '</summary>';
|
||||
$out .= sprintf('
|
||||
<fieldset class="versements" id="versements_%s">',
|
||||
$idVersement);
|
||||
$out .= sprintf('
|
||||
<input type="checkbox" class="check_%s" id="check_%s"',
|
||||
$idVersement,
|
||||
<input type="checkbox" id="check_%s"',
|
||||
$idVersement);
|
||||
$out .= sprintf(' onclick="cocherDecocherPersonne(check_%s, total_%s)" />',
|
||||
$idVersement,
|
||||
@ -128,17 +130,28 @@ $tpl->register_function('afficher_versement', function ($params)
|
||||
$out = '<div class="';
|
||||
$out .= ($rang%2==0) ? 'pair">' : 'impair">';
|
||||
$out .= sprintf('
|
||||
<input type="checkbox" class="check_%s" id="check_%s_%s"
|
||||
name="selected[]" value="%s"
|
||||
onclick="cocherDecocherVersement(check_%s_%s, total_%s)" />
|
||||
<label for="check_%s_%s"></label>
|
||||
<span class="montant">%.2f</span>
|
||||
<input type="checkbox"
|
||||
class="check_%s"
|
||||
id="check_%s_%s"
|
||||
name="selected[]"
|
||||
value="%s"
|
||||
onclick="cocherDecocherVersement(check_%s_%s, total_%s)" />',
|
||||
$idVersement,
|
||||
$idVersement, $rang,
|
||||
$rang,
|
||||
$idVersement, $rang, $idVersement
|
||||
);
|
||||
$out .= sprintf('
|
||||
<label for="check_%s_%s"></label>',
|
||||
$idVersement, $rang
|
||||
);
|
||||
$out .= sprintf('
|
||||
<span class="montant">%.2f</span>',
|
||||
$versement->versement/100
|
||||
);
|
||||
$out .= sprintf('
|
||||
<span>%s</span>
|
||||
</div>',
|
||||
$idVersement, $idVersement,
|
||||
$rang, $rang,
|
||||
$idVersement, $rang, $idVersement, $idVersement, $rang,
|
||||
$versement->versement/100,
|
||||
date_format(date_create($versement->date),"d/m/Y"));
|
||||
return $out;
|
||||
});
|
||||
|
@ -13,7 +13,7 @@ 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');
|
||||
$confNoms = Utils::getChampsNom($config, $plugin);
|
||||
uasort($confNoms, function ($a, $b)
|
||||
{
|
||||
return $a->position - $b->position;
|
||||
@ -34,22 +34,24 @@ $_SESSION['membresDonateurs'] = Utils::getDonateurs($_SESSION['annee_recu'],
|
||||
// ------------------------------------------------------------------------
|
||||
// fonctions pour l'affichage
|
||||
|
||||
// afficher les informations d'une personne
|
||||
// Afficher les informations d'une personne
|
||||
$tpl->register_function('afficher_debut_personne', function ($params)
|
||||
{
|
||||
$versement = $params['versement'];
|
||||
$idUser = $versement->idUser;
|
||||
$personne = $_SESSION['membresDonateurs'][$idUser];
|
||||
$idVersement = $versement->idUser;
|
||||
$out = sprintf('<h3 class="personne">Versements de %s : <span id="total_%s">0,00 €</span></h3>',
|
||||
$out = '<details class="personne" open="open">
|
||||
<summary class="personne">';
|
||||
$out .= sprintf('<h4 class="personne">Versements de %s : <span id="total_%s">0,00 €</span></h4>',
|
||||
$personne->nomPrenom,
|
||||
$idVersement);
|
||||
$out .= '</summary>';
|
||||
$out .= sprintf('
|
||||
<fieldset class="versements" id="versements_%s">',
|
||||
$idVersement);
|
||||
$out .= sprintf('
|
||||
<input type="checkbox" class="check_%s" id="check_%s"',
|
||||
$idVersement,
|
||||
<input type="checkbox" id="check_%s"',
|
||||
$idVersement);
|
||||
$out .= sprintf(' onclick="cocherDecocherPersonne(check_%s, total_%s)" />',
|
||||
$idVersement,
|
||||
@ -71,17 +73,28 @@ $tpl->register_function('afficher_versement', function ($params)
|
||||
$out = '<div class="';
|
||||
$out .= ($rang%2==0) ? 'pair">' : 'impair">';
|
||||
$out .= sprintf('
|
||||
<input type="checkbox" class="check_%s" id="check_%s_%s"
|
||||
name="selected[]" value="%s"
|
||||
onclick="cocherDecocherVersement(check_%s_%s, total_%s)" />
|
||||
<label for="check_%s_%s"></label>
|
||||
<span class="montant">%.2f</span>
|
||||
<input type="checkbox"
|
||||
class="check_%s"
|
||||
id="check_%s_%s"
|
||||
name="selected[]"
|
||||
value="%s"
|
||||
onclick="cocherDecocherVersement(check_%s_%s, total_%s)" />',
|
||||
$idVersement,
|
||||
$idVersement, $rang,
|
||||
$rang,
|
||||
$idVersement, $rang, $idVersement
|
||||
);
|
||||
$out .= sprintf('
|
||||
<label for="check_%s_%s"></label>',
|
||||
$idVersement, $rang
|
||||
);
|
||||
$out .= sprintf('
|
||||
<span class="montant">%.2f</span>',
|
||||
$versement->versement/100
|
||||
);
|
||||
$out .= sprintf('
|
||||
<span>%s</span>
|
||||
</div>',
|
||||
$idVersement, $idVersement,
|
||||
$rang, $rang,
|
||||
$idVersement, $rang, $idVersement, $idVersement, $rang,
|
||||
$versement->versement/100,
|
||||
date_format(date_create($versement->date),"d/m/Y"));
|
||||
return $out;
|
||||
});
|
||||
|
Loading…
Reference in New Issue
Block a user