Compare commits

..

No commits in common. "master" and "evolution" have entirely different histories.

13 changed files with 137 additions and 178 deletions

View file

@ -71,8 +71,8 @@ $tpl->register_function('afficher_debut_tarif', function ($params)
<summary class="activite"> <summary class="activite">
<div class="activite"> <div class="activite">
<input type="checkbox" id="check_%1$s" <input type="checkbox" id="check_%1$s"
onclick="cocherDecocherTarif(check_%1$s, %2$s)" />', onclick="cocherDecocherTarif(check_%1$s)" />',
$idTarif, "total_general"); $idTarif);
if ($idTarif == 0) { if ($idTarif == 0) {
// versement sur un compte non rattaché à une activité // versement sur un compte non rattaché à une activité
$out .= sprintf(' $out .= sprintf('
@ -122,7 +122,7 @@ $tpl->register_function('afficher_debut_personne', function ($params)
<summary class="personne"> <summary class="personne">
<div class="personne"> <div class="personne">
<input type="checkbox" id="check_%1$s" <input type="checkbox" id="check_%1$s"
onclick="cocherDecocherPersonne(check_%1$s, total_%1$s, %3$s)" /> onclick="cocherDecocherPersonne(check_%1$s, total_%1$s)" />
<label for="check_%1$s"> <label for="check_%1$s">
%2$s : <span class="total" id="total_%1$s">0,00 </span> %2$s : <span class="total" id="total_%1$s">0,00 </span>
</label> </label>
@ -130,8 +130,7 @@ $tpl->register_function('afficher_debut_personne', function ($params)
</summary> </summary>
<div class="versements">', <div class="versements">',
$idVersement, $idVersement,
$personne->nomPrenom, $personne->nomPrenom
"total_general"
); );
return $out; return $out;
}); });
@ -164,7 +163,7 @@ $tpl->register_function('afficher_versement', function ($params)
id="check_%1$s_%2$s" id="check_%1$s_%2$s"
name="selected[]" name="selected[]"
value="%2$s" value="%2$s"
onclick="cocherDecocherCase(check_%1$s_%2$s, total_%1$s, %5$s)" /> onclick="cocherDecocherVersement(check_%1$s_%2$s, total_%1$s)" />
<label for="check_%1$s_%2$s"><span class="montant">%3$s</span> <label for="check_%1$s_%2$s"><span class="montant">%3$s</span>
<span>%4$s</span> <span>%4$s</span>
</label> </label>
@ -177,8 +176,7 @@ $tpl->register_function('afficher_versement', function ($params)
",", ",",
"&nbsp;" "&nbsp;"
), ),
date_format(date_create($versement->date),"d/m/Y"), date_format(date_create($versement->date),"d/m/Y")
"total_general"
); );
return $out; return $out;
}); });

View file

@ -16,11 +16,9 @@ $_GET['_dialog'] = true;
// signature // signature
$signature = $signature =
(null !== $config->fileURL('signature')) ? (null !== $plugin->getConfig('signature')) ?
$config->fileURL('signature') : \KD2\HTTP::getScheme() . '://' . \KD2\HTTP::getHost() . WWW_URI . "/" . $plugin->getConfig('signature') :
((null !== $plugin->getConfig('signature')) ? "";
\KD2\HTTP::getScheme() . '://' . \KD2\HTTP::getHost() . WWW_URI . $plugin->getConfig('signature') :
"");
// logo // logo
$config = Config::getInstance(); $config = Config::getInstance();
@ -113,8 +111,7 @@ function genererRecusPDF($totalPersonnes,
$numero_sequentiel = getNumSequentiel($configNum); $numero_sequentiel = getNumSequentiel($configNum);
foreach ($totalPersonnes as $idPersonne => $personne) { foreach ($totalPersonnes as $idPersonne => $personne) {
$tpl = new UserTemplate(null); $tpl = new UserTemplate(null);
/* $tpl->setSource(PLUGIN_ROOT . '/templates/recu.skel'); */ $tpl->setSource(PLUGIN_ROOT . '/templates/recu.skel');
$tpl->setSourcePath(PLUGIN_ROOT . '/templates/recu.skel');
$tpl->assignArray(compact('signature', 'logo_asso', 'texteArticles')); $tpl->assignArray(compact('signature', 'logo_asso', 'texteArticles'));
$tpl->assign('objet_asso', $plugin->getConfig('objet_asso')); $tpl->assign('objet_asso', $plugin->getConfig('objet_asso'));
@ -208,9 +205,9 @@ function genererRecusPDF($totalPersonnes,
); );
//supprimer les fichiers pdf //supprimer les fichiers pdf
foreach ($listeFichiersPDF as $f) { // foreach ($listeFichiersPDF as $f) {
\Paheko\Utils::safe_unlink($f); // \Paheko\Utils::safe_unlink($f);
} // }
} // genererRecusPDF } // genererRecusPDF
function generererRecusHTML($tpl, function generererRecusHTML($tpl,

View file

@ -34,18 +34,5 @@ div.previs_recu
font-family: Serif; font-family: Serif;
font-size: 11pt; font-size: 11pt;
background-color: white; background-color: white;
break-after: always; page-break-after: always;
}
/* supprimer saut de page après dernier */
div.previs_recu:last-of-type
{
font-family: Serif;
font-size: 11pt;
background-color: white;
break-after: avoid;
}
#__profiler {
display: none;
} }

View file

@ -95,9 +95,3 @@ span.titre, span.libelle
{ {
display : inline; display : inline;
} }
/* Ne pas imprimer le bandeau des boutons du profiler */
#__profiler
{
display: none;
}

View file

@ -1,26 +1,5 @@
"use strict"; "use strict";
/**
* renvoyer la valeur numérique d'un montant formaté en
* @param texte qui représente nu nombre
*/
function getNumber(texte) {
return Number(texte.replace(/[^0-9,]/g, '').replace(/,/, '.'));
}
/**
* afficher un montant au format monétaire
* @param montant à afficher
* @param idElem : élément faire l'affichage
*/
function displayNumber(montant, idElem) {
idElem.innerHTML =
montant.toLocaleString('fr-FR', {
style: 'currency', currency: 'EUR',
minimumFractionDigits: 2
});
}
// ------------------------------------------------------------------------ // ------------------------------------------------------------------------
// actions sur la liste des versements // actions sur la liste des versements
// ------------------------------------------------------------------------ // ------------------------------------------------------------------------
@ -29,15 +8,14 @@ function displayNumber(montant, idElem) {
* Fonction appelée quand on ()coche la case globale * Fonction appelée quand on ()coche la case globale
* ()sélectionner toutes les cases de toutes les activités * ()sélectionner toutes les cases de toutes les activités
* @param {HTMLInputElement} idCaseGlobale id de la case globale * @param {HTMLInputElement} idCaseGlobale id de la case globale
* @param {HTMLSpanElement} idTotalGeneral id du total général
*/ */
function cocherDecocherTout(idCaseGlobale, idTotalGeneral) { function cocherDecocherTout(idCaseGlobale) {
// itérer sur la liste des éléments détails : 1 par couple <activité, tarif> // itérer sur la liste des éléments détails : 1 par couple <activité, tarif>
let lesDetails = document.querySelectorAll("details.activite"); let lesDetails = document.querySelectorAll("details.activite");
for (let i = 0; i < lesDetails.length; ++i) { for (let i = 0; i < lesDetails.length; ++i) {
let idCase = lesDetails[i].querySelector("input[type=checkbox]"); let idCase = lesDetails[i].querySelector("input[type=checkbox]");
idCase.checked = idCaseGlobale.checked; idCase.checked = idCaseGlobale.checked;
cocherDecocherTarif(idCase, idTotalGeneral); cocherDecocherTarif(idCase);
} }
// changer le message // changer le message
changerMessage(idCaseGlobale.nextElementSibling, idCaseGlobale); changerMessage(idCaseGlobale.nextElementSibling, idCaseGlobale);
@ -47,37 +25,35 @@ function cocherDecocherTout(idCaseGlobale, idTotalGeneral) {
* Fonction appelée quand on ()coche la case d'activité * Fonction appelée quand on ()coche la case d'activité
* ()sélectionner toutes les cases de cette activité * ()sélectionner toutes les cases de cette activité
* @param {HTMLInputElement} idCaseGlobale id de la case d'activité * @param {HTMLInputElement} idCaseGlobale id de la case d'activité
* @param {HTMLSpanElement} idTotalGeneral id du total général
*/ */
function cocherDecocherTarif(idCaseGlobale, idTotalGeneral) { function cocherDecocherTarif(idCaseGlobale) {
let lesPersonnes = idCaseGlobale.closest("details").querySelectorAll("div.personne"); let lesPersonnes = idCaseGlobale.closest("details").querySelectorAll("div.personne");
cocherDecocherLesPersonnes(idCaseGlobale, lesPersonnes, idTotalGeneral); cocherDecocherLesPersonnes(idCaseGlobale, lesPersonnes);
} }
/** /**
* idem dans le cas des versements des personnes * idem dans le cas des versements des personnes
* @param {HTMLInputElement} idCaseGlobale id case à cocher d'une personne * @param {HTMLInputElement} idCaseGlobale id case à cocher d'une personne
*/ */
function cocherDecocherToutesLesPersonnes(idCaseGlobale, idTotalGeneral) { function cocherDecocherToutesLesPersonnes(idCaseGlobale) {
let lesPersonnes = document.querySelectorAll("summary.personne"); let lesPersonnes = document.querySelectorAll("div.personne");
cocherDecocherLesPersonnes(idCaseGlobale, lesPersonnes, idTotalGeneral); cocherDecocherLesPersonnes(idCaseGlobale, lesPersonnes);
changerMessage(idCaseGlobale.nextElementSibling, idCaseGlobale); changerMessage(idCaseGlobale.nextElementSibling, idCaseGlobale);
} }
/** /**
* @param {HTMLInputElement} idCaseGlobale * @param {HTMLInputElement} idCaseGlobale
* @param {NodeListOf<Element>} lesPersonnes * @param {NodeListOf<Element>} lesPersonnes
* @param {HTMLSpanElement} idTotalGeneral id du total général */
*/ function cocherDecocherLesPersonnes(idCaseGlobale, lesPersonnes) {
function cocherDecocherLesPersonnes(idCaseGlobale, lesPersonnes, idTotalGeneral) {
for (let j = 0; j < lesPersonnes.length; ++j) { for (let j = 0; j < lesPersonnes.length; ++j) {
// trouver l'élément total de la personne // trouver l'élément total de la personne
let idTotal = lesPersonnes[j].querySelector("span.total"); let idTotal = lesPersonnes[j].querySelector("span");
// puis la case à cocher // puis la case à cocher
let idCase = lesPersonnes[j].querySelector("input[type=checkbox]"); let idCase = lesPersonnes[j].closest("summary").querySelector("input");
idCase.checked = idCaseGlobale.checked; idCase.checked = idCaseGlobale.checked;
// puis traiter toutes les cases de la personne // puis traiter toutes les cases de la personne
cocherDecocherPersonne(idCase, idTotal, idTotalGeneral); cocherDecocherPersonne(idCase, idTotal);
} }
} }
@ -86,45 +62,51 @@ function cocherDecocherLesPersonnes(idCaseGlobale, lesPersonnes, idTotalGeneral)
* - ()sélectionner toutes les cases à cocher * - ()sélectionner toutes les cases à cocher
* - faire le total des cases cochées et l'afficher * - faire le total des cases cochées et l'afficher
* @param {HTMLInputElement} idCase id de la case qui a été cochée * @param {HTMLInputElement} idCase id de la case qui a été cochée
* @param {HTMLSpanElement} idTotal id de l'élément afficher le total de la personne * @param {HTMLSpanElement} idTotal id de l'élément afficher le total
* @param {HTMLSpanElement} idTotalGeneral id de l'élément afficher le total général
*/ */
function cocherDecocherPersonne(idCase, idTotal, idTotalGeneral) { function cocherDecocherPersonne(idCase, idTotal) {
let conteneur = idCase.closest("details").querySelector("div.versements"); // chercher le fieldset des versements
let listeCases = conteneur.querySelectorAll("input[type=checkbox]"); let fieldset = idCase.closest("details").querySelector("div.versements");
let listeCases = fieldset.querySelectorAll("input[type=checkbox]");
for (let i = 0; i < listeCases.length; ++i) { for (let i = 0; i < listeCases.length; ++i) {
if (listeCases[i].checked != idCase.checked) { listeCases[i].checked = idCase.checked;
listeCases[i].checked = idCase.checked; cocherDecocherVersement(listeCases[i], idTotal);
cocherDecocherVersement(listeCases[i], idTotal, idTotalGeneral); }
}
}
} }
/** /**
* Fonction appelée quand on ()coche la case d'un versement * Fonction appelée quand on ()coche la case d'un versement
* Mettre à jour le total des cases cochées et le total global et les afficher * Faire le total des cases cochées et l'afficher
* *
* @param {HTMLInputElement} idCase id de la case qui a été ()cochée * @param {HTMLInputElement} idCase id de la case qui a été cochée
* @param {HTMLSpanElement} idTotal id du total de la personne * @param {HTMLSpanElement} idTotal id de l'élément afficher le total
* @param {HTMLSpanElement} idTotalGeneral id du total général
*/ */
function cocherDecocherVersement(idCase, idTotal) {
let fieldset = idCase.closest("div.versements");
let listeCases = fieldset.querySelectorAll("input[type=checkbox]");
let listeMontants = fieldset.querySelectorAll("span.montant");
calculerTotal(listeCases, listeMontants, idTotal);
}
function cocherDecocherVersement(idCase, idTotal, idTotalGeneral) { /**
let div = idCase.closest("div"); * Faire le total des cases cochées et l'afficher
let idmontant = div.querySelector("span.montant"); * @param {NodeListOf<Element>} listeCases liste des cases
let montant = getNumber(idmontant.textContent); * @param {NodeListOf<Element>} listeMontants liste des montants associés
let totalPersonne = getNumber(idTotal.textContent); * @param {HTMLSpanElement} idTotal id de l'élément afficher le total
let totalGeneral = getNumber(idTotalGeneral.textContent); */
if (idCase.checked) { function calculerTotal(listeCases, listeMontants, idTotal) {
totalPersonne += montant; let total = 0;
totalGeneral += montant; for (let i = 0; i < listeCases.length; ++i) {
} else { if (listeCases[i].checked) {
totalPersonne -= montant; total += parseFloat(listeMontants[i].textContent.replace(/\s/g, "").replace(",", "."));
totalGeneral -= montant; }
} }
displayNumber(totalPersonne, idTotal); // afficher le total
displayNumber(totalGeneral, idTotalGeneral); idTotal.innerHTML =
total.toLocaleString('fr-FR', {
style: 'currency', currency: 'EUR',
minimumFractionDigits: 2
});
} }
/** /**
@ -285,8 +267,10 @@ function verifierCases(conteneur, type, message) {
*/ */
function changerStyle(document) { function changerStyle(document) {
let styles = document.querySelectorAll('link[rel="stylesheet"]'); let styles = document.querySelectorAll('link[rel="stylesheet"]');
// console.log(styles);
for (let sheet of styles) { for (let sheet of styles) {
if (sheet.href.includes('print.css')) { sheet.media = "tv"; } if (sheet.href.includes('print.css')) { sheet.media = "tv"; sheet.remove; }
if (sheet.href.includes('imprimer_recu.css')) { sheet.media = 'print'; } if (sheet.href.includes('imprimer_recu.css')) { sheet.media = 'print'; }
} }
// console.log(styles);
} }

View file

@ -2,10 +2,6 @@
* liste des versements * liste des versements
*/ */
label.strong {
font-weight : bold;
}
div.pair { div.pair {
background-color: rgba(var(--gSecondColor), 0.15); background-color: rgba(var(--gSecondColor), 0.15);
} }

View file

@ -15,8 +15,8 @@ if (!File::checkCreateAccess($parent, $session)) {
$csrf_key = 'upload_file_' . md5($parent); $csrf_key = 'upload_file_' . md5($parent);
$form->runIf('upload', function () use ($parent, $session) { $form->runIf('upload', function () use ($parent) {
$_SESSION['sig_file'] = \Paheko\Files\Files::uploadMultiple($parent, 'file', $session); $_SESSION['sig_file'] = \Paheko\Files\Files::uploadMultiple($parent, 'file');
}, $csrf_key, PLUGIN_ROOT . '/admin/config.php'); }, $csrf_key, PLUGIN_ROOT . '/admin/config.php');
$tpl->assign(compact('parent', 'csrf_key')); $tpl->assign(compact('parent', 'csrf_key'));

View file

@ -22,7 +22,7 @@ class Utils
description, description,
amount as montant amount as montant
FROM services_fees'); FROM services_fees');
return $db->getGrouped($sql); return Utils::toAssoc($db->get($sql), 'id');
} }
/** /**
@ -37,7 +37,7 @@ class Utils
services.label, services.label,
services.description services.description
FROM services'); FROM services');
return $db->getGrouped($sql); return Utils::toAssoc($db->get($sql), 'id');
} }
/** /**
@ -76,7 +76,7 @@ class Utils
$annee, $annee,
$db->where('code', $op, $comptes) $db->where('code', $op, $comptes)
); );
return $db->getGrouped($sql); return Utils::toAssoc($db->get($sql), 'id');
} }
/** /**
@ -120,6 +120,32 @@ class Utils
return $db->get($sql); return $db->get($sql);
} }
/**
* faire un tableau associatif avec le résultat d'une requête
*/
static function toAssoc($array, $nomCle)
{
$assoc = array();
foreach ($array as $elem)
{
$ro = new \ReflectionObject($elem);
$proprietes = $ro->getProperties();
$obj = new \stdClass();
foreach ($proprietes as $p)
{
$pname = $p->getName();
if ($pname == $nomCle) {
$key = $p->getValue($elem);
}
else {
$obj->$pname = $p->getValue($elem);
}
}
$assoc[$key] = $obj;
}
return $assoc;
}
/** /**
* @return versements correspondants à l'année donnée * @return versements correspondants à l'année donnée
* @param $annee * @param $annee

View file

@ -1,12 +1,12 @@
<!-- title --> <!-- title -->
{include file="_head.tpl" title="%s"|args:$plugin.label current="plugin_%s"|args:$plugin.name} {include file="_head.tpl" title="%s"|args:$plugin.label current="plugin_%s"|args:$plugin.id}
<!-- nav bar --> <!-- nav bar -->
<nav class="tabs"> <nav class="tabs">
<ul> <ul>
<li{if $current_nav == 'index'} class="current"{/if}><a href="{plugin_url}">Accueil</a></li> <li{if $current_nav == 'index'} class="current"{/if}><a href="{plugin_url}">Accueil</a></li>
{if $current_nav == 'personne'} <li class="current"><a>Versements par personne</a></li>{/if} <li{if $current_nav == 'personne'} class="current"{/if}><a href="{plugin_url file="action.php?action=personne"}">Versements par personne</a></li>
{if $current_nav == 'activite'} <li class="current"><a>Versements par activité et tarif</a></li>{/if} <li{if $current_nav == 'activite'} class="current"{/if}><a href="{plugin_url file="action.php?action=activite"}">Versements par activité et tarif</a></li>
{if $session->canAccess($session::SECTION_ACCOUNTING, $session::ACCESS_WRITE)} {if $session->canAccess($session::SECTION_ACCOUNTING, $session::ACCESS_WRITE)}
<li{if $current_nav == 'config'} class="current"{/if}><a href="{plugin_url file="config.php"}">Configuration</a></li> <li{if $current_nav == 'config'} class="current"{/if}><a href="{plugin_url file="config.php"}">Configuration</a></li>
{/if} {/if}

View file

@ -14,7 +14,7 @@
<fieldset> <fieldset>
{* <legend>Choisir une des méthodes</legend> *} {* <legend>Choisir une des méthodes</legend> *}
<dl> <dl id="menu">
<dd class="radio-btn"> <dd class="radio-btn">
<input type="radio" id="radio_versements_personne" name="choix_versements" value="personne" <input type="radio" id="radio_versements_personne" name="choix_versements" value="personne"
onclick="choixMethodeGeneration(this.form, 'personne', 'menu_versements', '.menu');" /> onclick="choixMethodeGeneration(this.form, 'personne', 'menu_versements', '.menu');" />

View file

@ -1,4 +1,4 @@
{include file="_head.tpl" title="%s"|args:$plugin.label current="plugin_%s"|args:$plugin.id} {include file="_head.tpl" title="%s"|args:$plugin.name current="plugin_%s"|args:$plugin.id}
<?php <?php
$fmt = new \NumberFormatter('fr_FR', \NumberFormatter::SPELLOUT); $fmt = new \NumberFormatter('fr_FR', \NumberFormatter::SPELLOUT);
@ -15,12 +15,12 @@
<p id="articles">Articles 200, 238 bis et 978 du code général des impôts</p> <p id="articles">Articles 200, 238 bis et 978 du code général des impôts</p>
<div id="numRecu"> <div id="numRecu">
{if $numero_sequentiel} {if $numero_sequentiel}
{afficher_numero_recu prefixe=$prefixeNum membre=$membre numero_personne=$personne->numero numero_sequentiel=$numero_courant} {afficher_numero_recu prefixe=$prefixeNum membre=$membre numero_personne=$personne->numero numero_sequentiel=$numero_courant}
<?php <?php
++$numero_courant; ++$numero_courant;
?> ?>
{else} {else}
{afficher_numero_recu prefixe=$prefixeNum membre=$membre numero_personne=$personne->numero numero_sequentiel=$numero_sequentiel} {afficher_numero_recu prefixe=$prefixeNum membre=$membre numero_personne=$personne->numero numero_sequentiel=$numero_sequentiel}
{/if} {/if}
</div> </div>
</div> </div>
@ -28,20 +28,20 @@
<div class="cartouche" id="beneficiaire"> <div class="cartouche" id="beneficiaire">
<h3 class="rubrique">Bénéficiaire des versements</h3> <h3 class="rubrique">Bénéficiaire des versements</h3>
<p class="important">Association « {$org_name} »<br /> <p class="important">Association « {$org_name} »<br />
{$org_address}<br /> {$org_address}<br />
<span class="titre">Objet&nbsp;:&nbsp;</span><span class="libelle">{$objet_asso}</span> <span class="titre">Objet&nbsp;:&nbsp;</span><span class="libelle">{$objet_asso}</span>
</p> </p>
</div> </div>
<div class="cartouche" id="donateur"> <div class="cartouche" id="donateur">
<h3 class="rubrique">Donateur</h3> <h3 class="rubrique">Donateur</h3>
<p> <p>
{$personne.nomPrenom}<br /> {$personne.nomPrenom}<br />
{$personne.adresse}<br /> {$personne.adresse}<br />
{$personne.codePostal} {$personne.ville} {$personne.codePostal} {$personne.ville}
{if $courriel && $personne.courriel != ""} {if $courriel && $personne.courriel != ""}
<br />courriel : <a href="mailto:{$personne.courriel}">{$personne.courriel}</a> <br />courriel : <a href="mailto:{$personne.courriel}">{$personne.courriel}</a>
{/if} {/if}
</p> </p>
</div> </div>

View file

@ -4,24 +4,15 @@
<h2>Année {$annee_recu} : versements par activité et tarif</h2> <h2>Année {$annee_recu} : versements par activité et tarif</h2>
<fieldset class="noprint"> <fieldset class="noprint">
<dl> <input type="checkbox" class="check_global" id="check_global" onclick="cocherDecocherTout(check_global)" />
<dd>
<label class="strong">Total des cases cochées : </label>
<span class="total" id="total_general">0,00 €</span>
</dd>
<dd>
<input type="checkbox" class="check_global" id="check_global" onclick="cocherDecocherTout(check_global, total_general)" />
<label for="check_global">Cliquer pour cocher toutes les lignes</label> <label for="check_global">Cliquer pour cocher toutes les lignes</label>
</dd>
<dd>
<button type="button" data-icon="↑" class="icn-btn" id="close_details_activite" <button type="button" data-icon="↑" class="icn-btn" id="close_details_activite"
onclick="montrerMasquerDetails(this.id, 'details.activite', 'toutes les activités')"> onclick="montrerMasquerDetails(this.id, 'details.activite', 'toutes les activités')">
Replier toutes les activités</button> Replier toutes les activités</button>
<button type="button" data-icon="↑" class="icn-btn" id="close_details_personne" <button type="button" data-icon="↑" class="icn-btn" id="close_details_personne"
onclick="montrerMasquerDetails(this.id, 'details.personne', 'toutes les personnes')"> onclick="montrerMasquerDetails(this.id, 'details.personne', 'toutes les personnes')">
Replier toutes les personnes</button> Replier toutes les personnes</button>
</dd> <br />
<dd>
{button type="submit" label="Télécharger les reçus au format PDF" shape="download" {button type="submit" label="Télécharger les reçus au format PDF" shape="download"
form="versements_activites" form="versements_activites"
formaction="generer_recus.php?type=activite&format=pdf" formaction="generer_recus.php?type=activite&format=pdf"
@ -30,11 +21,9 @@
form="versements_activites" form="versements_activites"
formaction="generer_recus.php?type=activite&format=print" formaction="generer_recus.php?type=activite&format=print"
onclick="return verifierChoix(this.form)"} onclick="return verifierChoix(this.form)"}
</dd>
</dl>
</fieldset> </fieldset>
<form method="post" target="_blank" id="versements_activites" data-disable-progress="1"> <form method="post" target="_blank" id="versements_activites">
{* Itération sur les versements *} {* Itération sur les versements *}
{foreach from=$lesVersements key="rang" item="versement"} {foreach from=$lesVersements key="rang" item="versement"}

View file

@ -4,36 +4,24 @@
<h2>Année {$annee_recu} : versements par personne</h2> <h2>Année {$annee_recu} : versements par personne</h2>
<fieldset class="noprint"> <fieldset class="noprint">
<dl> <input type="checkbox" class="check_global" id="check_global"
onclick="cocherDecocherToutesLesPersonnes(check_global)" />
<dd> <label for="check_global">Cliquer pour cocher toutes les lignes</label>
<label class="strong">Total des cases cochées : </label> <button type="button" data-icon="↑" class="icn-btn" id="close_details_personne"
<span class="total" id="total_general">0,00 €</span> onclick="montrerMasquerDetails(this.id, 'details.personne', 'toutes les personnes')">
</dd> Replier toutes les personnes</button>
<dd> <br />
<input type="checkbox" class="check_global" id="check_global" {button type="submit" label="Télécharger les reçus au format PDF" shape="download"
onclick="cocherDecocherToutesLesPersonnes(check_global, total_general)" /> form="versements_personnes"
<label for="check_global">Cliquer pour cocher toutes les lignes</label> formaction="generer_recus.php?type=personne&format=pdf"
</dd> onclick="return verifierChoix(this.form)"}
<dd> {button type="submit" label="Imprimer les reçus" shape="print"
<button type="button" data-icon="↑" class="icn-btn" id="close_details_personne" form="versements_personnes"
onclick="montrerMasquerDetails(this.id, 'details.personne', 'toutes les personnes')"> formaction="generer_recus.php?type=personne&format=print"
Replier toutes les personnes</button> onclick="return verifierChoix(this.form)"}
</dd>
<dd>
{button type="submit" label="Télécharger les reçus au format PDF" shape="download"
form="versements_personnes"
formaction="generer_recus.php?type=personne&format=pdf"
onclick="return verifierChoix(this.form)"}
{button type="submit" label="Imprimer les reçus" shape="print"
form="versements_personnes"
formaction="generer_recus.php?type=personne&format=print"
onclick="return verifierChoix(this.form)"}
</dd>
</dl>
</fieldset> </fieldset>
<form method="post" target="_dialog" id="versements_personnes" data-disable-progress="1"> <form method="post" target="_dialog" id="versements_personnes">
{* Itération sur les personnes *} {* Itération sur les personnes *}
{foreach from=$lesVersements key="rang" item="versement"} {foreach from=$lesVersements key="rang" item="versement"}