ajout case tarif ; réorganisation code
FossilOrigin-Name: 80c6f13938d5f02786155717bf1ab8b89c6ade3c58bba572bf8c471b54886666
This commit is contained in:
parent
7ca41ea6b7
commit
6165ff531e
|
@ -22,8 +22,7 @@
|
|||
<label for="radio_versements_personne">
|
||||
<div class="explications">
|
||||
<h5>
|
||||
Tous les versements des membres font l'objet d'un reçu, sans
|
||||
tenir compte des activités et tarifs
|
||||
Tous les versements des membres font l'objet d'un reçu, quels que soient les activités, tarifs et les comptes du plan comptable
|
||||
</h5>
|
||||
<p>Choisissez cette option si vous voulez sélectionner les versements d'une, plusieurs
|
||||
ou toutes les personnes</p>
|
||||
|
@ -31,6 +30,24 @@
|
|||
</label>
|
||||
</dd>
|
||||
|
||||
<dd class="radio-btn">
|
||||
<input type="radio" id="radio_versements_personne_compte" name="choix_versements" value="personne_compte"
|
||||
onclick="choixMethodeGeneration(this.form, 'personne', '.tous', '.activites');" />
|
||||
<label for="radio_versements_personne_compte">
|
||||
<div class="explications">
|
||||
<h5>
|
||||
Seuls les versements sur certains comptes du plan comptable font l'objet d'un reçu
|
||||
</h5>
|
||||
<p>Choisissez cette option si vous voulez sélectionner :</p>
|
||||
<ul>
|
||||
<li>certains comptes du plan comptable</li>
|
||||
<li>certains versements de certaines personnes</li>
|
||||
</ul>
|
||||
</div>
|
||||
</label>
|
||||
</dd>
|
||||
|
||||
<dd class="radio-btn">
|
||||
<dd class="radio-btn">
|
||||
<input type="radio" id="radio_versements_activites" name="choix_versements"
|
||||
value="activite" onclick="choixMethodeGeneration(this.form, 'activite', '.activites', '.tous');" />
|
||||
|
|
|
@ -4,62 +4,65 @@
|
|||
<h2>Versements par activité et tarif</h2>
|
||||
|
||||
<fieldset 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>
|
||||
<button type="button" data-icon="↑" class="icn-btn" id="close_details_activite" onclick="montrerMasquerDetails(this.id, 'details.activite', 'toutes les activités')">Replier toutes les activités</button>
|
||||
<button type="button" data-icon="↑" class="icn-btn" id="close_details_personne" onclick="montrerMasquerDetails(this.id, 'details.personne', 'toutes les personnes')">Replier toutes les personnes</button>
|
||||
<input type="submit" value="Générer les reçus" form="versements_activites" onclick="return verifierChoix(this.form)" />
|
||||
<input type="checkbox" class="check_global" id="check_global" onclick="cocherDecocherTout(check_global)" />
|
||||
<label for="check_global">Cliquer pour cocher toutes les lignes</label>
|
||||
<button type="button" data-icon="↑" class="icn-btn" id="close_details_activite"
|
||||
onclick="montrerMasquerDetails(this.id, 'details.activite', 'toutes les activités')">Replier toutes les
|
||||
activités</button>
|
||||
<button type="button" data-icon="↑" class="icn-btn" id="close_details_personne"
|
||||
onclick="montrerMasquerDetails(this.id, 'details.personne', 'toutes les personnes')">Replier toutes les
|
||||
personnes</button>
|
||||
<input type="submit" value="Générer les reçus" form="versements_activites"
|
||||
onclick="return verifierChoix(this.form)" />
|
||||
</fieldset>
|
||||
|
||||
<form method="post" id="versements_activites" action="generer_recus.php?type=activite">
|
||||
|
||||
{* Itération sur les versements *}
|
||||
<?php $rang = 0; ?>
|
||||
{foreach from=$lesVersements key="num" item="versement"}
|
||||
{foreach from=$lesVersements key="rang" item="versement"}
|
||||
{if $rang == 0}
|
||||
{* premier versement *}
|
||||
<?php
|
||||
$tarifCourant = $versement->idTarif;
|
||||
$personneCourante = $versement->idUser;
|
||||
$pair = true;
|
||||
$tarifCourant = $versement->idTarif;
|
||||
$personneCourante = $versement->idUser;
|
||||
$compteCourant = $versement->compte;
|
||||
?>
|
||||
{afficher_debut_tarif versement=$versement}
|
||||
{afficher_debut_personne user=$personneCourante idVersement="%s_%s"|args:$tarifCourant,$personneCourante}
|
||||
{afficher_versement versement=$versement idVersement="%s_%s"|args:$tarifCourant,$personneCourante num=$num rang=$rang}
|
||||
{else}
|
||||
{* autre versement *}
|
||||
{if $versement.idTarif != $tarifCourant}
|
||||
{* changement de tarif *}
|
||||
</fieldset> {* fin versements d'une personne *}
|
||||
</details> {* fin versements d'une personne *}
|
||||
</details> {* fin tarif *}
|
||||
<?php
|
||||
$rang=0;
|
||||
{elseif $versement.idTarif != $tarifCourant}
|
||||
{* changement de tarif *}
|
||||
{fin_personne}
|
||||
{fin_tarif}
|
||||
<?php
|
||||
$pair = true;
|
||||
$tarifCourant = $versement->idTarif;
|
||||
$personneCourante = $versement->idUser;
|
||||
?>
|
||||
{afficher_debut_tarif versement=$versement}
|
||||
{afficher_debut_personne user=$personneCourante idVersement="%s_%s"|args:$tarifCourant,$personneCourante}
|
||||
{afficher_versement versement=$versement idVersement="%s_%s"|args:$tarifCourant,$personneCourante num=$num rang=$rang}
|
||||
{elseif $versement.idUser != $personneCourante}
|
||||
{* changement de personne *}
|
||||
<?php $rang = 0; ?>
|
||||
</fieldset>
|
||||
</details>
|
||||
<?php
|
||||
$compteCourant = $versement->compte;
|
||||
?>
|
||||
{afficher_debut_tarif versement=$versement}
|
||||
{afficher_debut_personne user=$personneCourante idVersement="%s_%s"|args:$tarifCourant,$personneCourante}
|
||||
{elseif $versement.idUser != $personneCourante}
|
||||
{* changement de personne *}
|
||||
{fin_personne}
|
||||
<?php
|
||||
$pair = true;
|
||||
$personneCourante = $versement->idUser;
|
||||
?>
|
||||
{afficher_debut_personne user=$personneCourante idVersement="%s_%s"|args:$tarifCourant,$personneCourante}
|
||||
{afficher_versement versement=$versement idVersement="%s_%s"|args:$tarifCourant,$personneCourante num=$num rang=$rang}
|
||||
{else}
|
||||
{* même personne *}
|
||||
{afficher_versement versement=$versement idVersement="%s_%s"|args:$tarifCourant,$personneCourante num=$num rang=$rang}
|
||||
{/if}
|
||||
$compteCourant = $versement->compte;
|
||||
?>
|
||||
{afficher_debut_personne user=$personneCourante idVersement="%s_%s"|args:$tarifCourant,$personneCourante}
|
||||
{elseif $versement.compte != $compteCourant}
|
||||
{* même personne mais changement de compte *}
|
||||
<?php $compteCourant = $versement->compte; ?>
|
||||
<hr />
|
||||
{else}
|
||||
{* même personne, même compte *}
|
||||
{/if}
|
||||
<?php ++$rang; ?>
|
||||
{/foreach} {* Itération sur les versements *}
|
||||
</fieldset> {* fin versements d'une personne *}
|
||||
</details> {* fin versements d'une personne *}
|
||||
</details> {* fin tarif *}
|
||||
{afficher_versement versement=$versement idVersement="%s_%s"|args:$tarifCourant,$personneCourante rang=$rang pair=$pair}
|
||||
<?php $pair = ! $pair; ?>
|
||||
{/foreach} {* Itération sur les versements *}
|
||||
{fin_personne}
|
||||
{fin_tarif}
|
||||
|
||||
<input type="submit" value="Générer les reçus" onclick="return verifierChoix(this.form)" />
|
||||
</form>
|
||||
|
|
|
@ -17,33 +17,35 @@
|
|||
<form method="post" id="versements_personnes" action="generer_recus.php?type=personne">
|
||||
|
||||
{* Itération sur les personnes *}
|
||||
<?php $rang = 0; ?>
|
||||
{foreach from=$lesVersements key="num" item="versement"}
|
||||
{foreach from=$lesVersements key="rang" item="versement"}
|
||||
{if $rang == 0}
|
||||
{* 1ère personne *}
|
||||
<?php
|
||||
$personneCourante = $versement->idUser;
|
||||
$pair = true;
|
||||
$personneCourante = $versement->idUser;
|
||||
$compteCourant = $versement->compte;
|
||||
?>
|
||||
{afficher_debut_personne user=$personneCourante idVersement=$personneCourante}
|
||||
{afficher_versement versement=$versement idVersement=$personneCourante num=$num rang=$rang}
|
||||
{elseif $versement.idUser != $personneCourante}
|
||||
{* changement de personne *}
|
||||
<?php $rang = 0; ?>
|
||||
</fieldset>
|
||||
</details>
|
||||
{fin_personne}
|
||||
<?php
|
||||
$personneCourante = $versement->idUser;
|
||||
$pair = true;
|
||||
$personneCourante = $versement->idUser;
|
||||
$compteCourant = $versement->compte;
|
||||
?>
|
||||
{afficher_debut_personne user=$personneCourante idVersement=$personneCourante}
|
||||
{afficher_versement versement=$versement idVersement=$personneCourante num=$num rang=$rang}
|
||||
{elseif $versement.compte != $compteCourant}
|
||||
{* même personne mais changement de compte *}
|
||||
<?php $compteCourant = $versement->compte; ?>
|
||||
<hr />
|
||||
{else}
|
||||
{* même personne *}
|
||||
{afficher_versement versement=$versement idVersement=$personneCourante num=$num rang=$rang}
|
||||
{* même personne, même compte *}
|
||||
{/if}
|
||||
<?php ++$rang; ?>
|
||||
{afficher_versement versement=$versement idVersement=$personneCourante rang=$rang pair=$pair}
|
||||
<?php $pair = ! $pair; ?>
|
||||
{/foreach} {* Itération sur les personnes *}
|
||||
</fieldset>
|
||||
</details>
|
||||
{fin_personne}
|
||||
|
||||
<input type="submit" value="Générer les reçus" onclick="return verifierChoix(this.form)" />
|
||||
</form>
|
||||
|
|
|
@ -68,23 +68,32 @@ $tpl->register_function('afficher_debut_tarif', function ($params)
|
|||
$idActivite = $tarif->idActivite;
|
||||
$activite = $_SESSION['lesActivites'][$idActivite];
|
||||
|
||||
$out = '<details class="activite" open="open">
|
||||
<summary class="activite">';
|
||||
$out .= sprintf('
|
||||
<h3>Activité « %s »</h3>', $activite->label);
|
||||
$out = sprintf('
|
||||
<details class="activite" open="open">
|
||||
<summary class="activite">
|
||||
<div class="activite">
|
||||
<input type="checkbox" id="check_%1$s"
|
||||
onclick="cocherDecocherTarif(check_%1$s)" />
|
||||
<label for="check_%1$s">
|
||||
<h3 class="activite">Activité « %2$s »</h3>',
|
||||
$idTarif,
|
||||
$activite->label);
|
||||
|
||||
if (!empty($activite->description)) {
|
||||
$out .= sprintf('
|
||||
<h4>%s</h4>', $activite->description);
|
||||
<p class="activite">%s</p>', $activite->description);
|
||||
}
|
||||
$out .= sprintf('
|
||||
<h4>tarif « %s »', $tarif->label);
|
||||
<p class="activite">tarif « %s »', $tarif->label);
|
||||
if ($tarif->montant > 0) {
|
||||
$out .= sprintf(' montant : %.2f €', $tarif->montant/100);
|
||||
$out .= sprintf(' montant : %.2f €</p>', $tarif->montant/100);
|
||||
} else {
|
||||
$out .= ' montant : libre';
|
||||
$out .= ' montant : libre</p>';
|
||||
}
|
||||
$out .= '</h4>
|
||||
</summary>';
|
||||
$out .= '
|
||||
</label>
|
||||
</div>
|
||||
</summary>';
|
||||
return $out;
|
||||
});
|
||||
|
||||
|
@ -95,25 +104,22 @@ $tpl->register_function('afficher_debut_personne', function ($params)
|
|||
$idVersement = $params['idVersement'];
|
||||
|
||||
$personne = $_SESSION['membresDonateurs'][$idUser];
|
||||
$out = '<details class="personne" open="open">
|
||||
<summary class="personne">
|
||||
<h4 class="personne">';
|
||||
$out .= sprintf('
|
||||
<input type="checkbox" id="check_%s"',
|
||||
$idVersement);
|
||||
$out .= sprintf(' onclick="cocherDecocherPersonne(check_%s, total_%s)" />',
|
||||
$idVersement,
|
||||
$idVersement);
|
||||
$out .= sprintf('
|
||||
<label for="check_%s">',
|
||||
$idVersement);
|
||||
$out .= sprintf('%s : <span class="total" id="total_%s">0,00 €</span>',
|
||||
$personne->nomPrenom,
|
||||
$idVersement);
|
||||
$out .= '</label></h4></summary>';
|
||||
$out .= sprintf('
|
||||
<fieldset class="versements" id="versements_%s">',
|
||||
$idVersement);
|
||||
$out = sprintf('
|
||||
<details class="personne" open="open">
|
||||
<summary class="personne">
|
||||
<div class="personne">
|
||||
<input type="checkbox" id="check_%1$s"
|
||||
onclick="cocherDecocherPersonne(check_%1$s, total_%1$s)" />
|
||||
<label for="check_%1$s">
|
||||
%2$s : <span class="total" id="total_%1$s">0,00 €</span>
|
||||
</label>
|
||||
</div>
|
||||
</summary>
|
||||
|
||||
<fieldset class="versements" id="versements_%1$s">',
|
||||
$idVersement,
|
||||
$personne->nomPrenom
|
||||
);
|
||||
return $out;
|
||||
});
|
||||
|
||||
|
@ -122,42 +128,47 @@ $tpl->register_function('afficher_versement', function ($params)
|
|||
{
|
||||
$versement = $params['versement'];
|
||||
$idVersement = $params['idVersement'];
|
||||
$num = $params['num'];
|
||||
$rang = $params['rang'];
|
||||
$pair = $params['pair'];
|
||||
|
||||
$out = '<div class="';
|
||||
$out .= ($rang%2==0) ? 'pair">' : 'impair">';
|
||||
$out .= $pair ? '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)" />',
|
||||
$idVersement,
|
||||
$idVersement, $rang,
|
||||
$num,
|
||||
$idVersement, $rang, $idVersement
|
||||
);
|
||||
$out .= sprintf('
|
||||
<label for="check_%s_%s"><span class="montant">%.2f</span>',
|
||||
<input type="checkbox"
|
||||
class="check_%1$s"
|
||||
id="check_%1$s_%2$s"
|
||||
name="selected[]"
|
||||
value="%2$s"
|
||||
onclick="cocherDecocherVersement(check_%1$s_%2$s, total_%1$s)" />
|
||||
<label for="check_%1$s_%2$s"><span class="montant">%3$.2f</span>
|
||||
<span>%4$s</span>
|
||||
<span>%5$s</span>
|
||||
</label>
|
||||
</div>',
|
||||
$idVersement,
|
||||
$rang,
|
||||
$versement->versement/100
|
||||
);
|
||||
$out .= sprintf('
|
||||
<span>%s</span>',
|
||||
date_format(date_create($versement->date),"d/m/Y"));
|
||||
$out .= sprintf('
|
||||
<span>%s</span>',
|
||||
$versement->compte);
|
||||
$out .= sprintf('
|
||||
</label>
|
||||
</div>'
|
||||
$versement->versement/100,
|
||||
date_format(date_create($versement->date),"d/m/Y"),
|
||||
$versement->compte
|
||||
);
|
||||
return $out;
|
||||
});
|
||||
|
||||
$tpl->register_function('fin_personne', function ($params)
|
||||
{
|
||||
$out = '
|
||||
</fieldset>
|
||||
</details>';
|
||||
return $out;
|
||||
});
|
||||
|
||||
$tpl->register_function('fin_tarif', function ($params)
|
||||
{
|
||||
$out = '
|
||||
</details>';
|
||||
return $out;
|
||||
});
|
||||
|
||||
// ------------------------------------------------------------------------
|
||||
// aiguillage
|
||||
// ------------------------------------------------------------------------
|
||||
|
|
|
@ -1,8 +1,8 @@
|
|||
"use strict";
|
||||
|
||||
/**
|
||||
* Fonction appelée quand on (dé)coche la case de sélection globale
|
||||
* (dé)sélectionner toutes les cases à cocher de toutes les activités
|
||||
* Fonction appelée quand on (dé)coche la case globale
|
||||
* (dé)sélectionner toutes les cases de toutes les activités
|
||||
* @param {HTMLInputElement} idCaseGlobale id de la case globale
|
||||
*/
|
||||
function cocherDecocherTout(idCaseGlobale)
|
||||
|
@ -11,21 +11,32 @@ function cocherDecocherTout(idCaseGlobale)
|
|||
let lesDetails = document.querySelectorAll("details.activite");
|
||||
for (let i = 0; i < lesDetails.length; ++i)
|
||||
{
|
||||
// itérer sur les personnes
|
||||
let lesPersonnes = lesDetails[i].querySelectorAll("h4.personne");
|
||||
cocherDecocherLesPersonnes(idCaseGlobale, lesPersonnes);
|
||||
let idCase = lesDetails[i].querySelector("input[type=checkbox]");
|
||||
idCase.checked = idCaseGlobale.checked;
|
||||
cocherDecocherTarif(idCase);
|
||||
}
|
||||
// changer le message
|
||||
changerMessage(idCaseGlobale.nextElementSibling, idCaseGlobale);
|
||||
}
|
||||
|
||||
/**
|
||||
* Fonction appelée quand on (dé)coche la case d'activité
|
||||
* (dé)sélectionner toutes les cases à cocher de cette activité
|
||||
* @param {HTMLInputElement} idCaseGlobale id de la case d'activité
|
||||
*/
|
||||
function cocherDecocherTarif(idCaseGlobale)
|
||||
{
|
||||
let lesPersonnes = idCaseGlobale.closest("details").querySelectorAll("div.personne");
|
||||
cocherDecocherLesPersonnes(idCaseGlobale, lesPersonnes);
|
||||
}
|
||||
|
||||
/**
|
||||
* idem dans le cas des versements des personnes
|
||||
* @param {HTMLInputElement} idCaseGlobale id de la case globale
|
||||
* @param {HTMLInputElement} idCaseGlobale id case à cocher d'une personne
|
||||
*/
|
||||
function cocherDecocherToutesLesPersonnes(idCaseGlobale)
|
||||
{
|
||||
let lesPersonnes = document.querySelectorAll("h4.personne");
|
||||
let lesPersonnes = document.querySelectorAll("div.personne");
|
||||
cocherDecocherLesPersonnes(idCaseGlobale, lesPersonnes);
|
||||
changerMessage(idCaseGlobale.nextElementSibling, idCaseGlobale);
|
||||
}
|
||||
|
@ -49,7 +60,7 @@ function cocherDecocherLesPersonnes(idCaseGlobale, lesPersonnes)
|
|||
}
|
||||
|
||||
/**
|
||||
* Fonction appelée quand on (dé)coche la case globale d'une personne
|
||||
* Fonction appelée quand on (dé)coche la case d'une personne
|
||||
* - (dé)sélectionner toutes les cases à cocher
|
||||
* - faire le total des cases cochées et l'afficher
|
||||
* @param {HTMLInputElement} idCase id de la case qui a été cochée
|
||||
|
@ -63,10 +74,8 @@ function cocherDecocherPersonne(idCase, idTotal)
|
|||
for (let i = 0; i < listeCases.length; ++i)
|
||||
{
|
||||
listeCases[i].checked = idCase.checked;
|
||||
cocherDecocherVersement(listeCases[i], idTotal);
|
||||
}
|
||||
// calculer et afficher le total
|
||||
let listeMontants = fieldset.querySelectorAll("span.montant");
|
||||
calculerTotal(listeCases, listeMontants, idTotal);
|
||||
}
|
||||
|
||||
/**
|
||||
|
|
|
@ -2,7 +2,9 @@
|
|||
div.impair {
|
||||
background: rgba(var(--gSecondColor), 0.15);
|
||||
}
|
||||
fieldset {
|
||||
fieldset.versements
|
||||
{
|
||||
margin-left : 4em;
|
||||
-webkit-border-radius:8px;
|
||||
border-radius:8px;
|
||||
}
|
||||
|
@ -23,7 +25,6 @@ span.total
|
|||
}
|
||||
summary.activite
|
||||
{
|
||||
background: rgba(var(--gSecondColor), 0.5);
|
||||
margin-bottom : 0.5em;
|
||||
}
|
||||
summary.personne
|
||||
|
@ -32,11 +33,19 @@ summary.personne
|
|||
padding-top : 0;
|
||||
padding-bottom : 0;
|
||||
}
|
||||
h3.personne, h4.personne
|
||||
div.personne, div.activite
|
||||
{
|
||||
font-weight : normal;
|
||||
background: rgba(var(--gSecondColor), 0.25);
|
||||
}
|
||||
h3.activite
|
||||
{
|
||||
display : inline;
|
||||
}
|
||||
p.activite
|
||||
{
|
||||
margin-left : 2.5em;
|
||||
}
|
||||
#signature
|
||||
{
|
||||
padding : 1em 0.5em 0 0.5em;
|
||||
|
|
Loading…
Reference in New Issue