fusion branche test
FossilOrigin-Name: 164ded799fce1137144dfbad7c2fbbaef34ec17cfdadb3a06a925e735819c033
This commit is contained in:
commit
c221014650
@ -10,8 +10,8 @@ class Personne
|
|||||||
public $id;
|
public $id;
|
||||||
public $nomPrenom;
|
public $nomPrenom;
|
||||||
public $adresse;
|
public $adresse;
|
||||||
public $ville;
|
|
||||||
public $codePostal;
|
public $codePostal;
|
||||||
|
public $ville;
|
||||||
public $courriel;
|
public $courriel;
|
||||||
public $versements; // tableau des versements totaux par activité/tarif
|
public $versements; // tableau des versements totaux par activité/tarif
|
||||||
|
|
||||||
@ -19,32 +19,54 @@ class Personne
|
|||||||
$id,
|
$id,
|
||||||
$nomPrenom,
|
$nomPrenom,
|
||||||
$adresse,
|
$adresse,
|
||||||
$ville,
|
|
||||||
$codePostal,
|
$codePostal,
|
||||||
$courriel
|
$ville,
|
||||||
|
$courriel = ""
|
||||||
) {
|
) {
|
||||||
$this->id = $id;
|
$this->id = $id;
|
||||||
$this->nomPrenom = $nomPrenom;
|
$this->nomPrenom = $nomPrenom;
|
||||||
$this->adresse = $adresse;
|
$this->adresse = $adresse;
|
||||||
$this->ville = $ville;
|
|
||||||
$this->codePostal = $codePostal;
|
$this->codePostal = $codePostal;
|
||||||
|
$this->ville = $ville;
|
||||||
$this->courriel = $courriel;
|
$this->courriel = $courriel;
|
||||||
$this->versements = array();
|
$this->versements = array();
|
||||||
}
|
}
|
||||||
|
|
||||||
/*
|
/**
|
||||||
* ajouter un versement pour une activité et un tarif donnés
|
* return copie d'une personne
|
||||||
|
* @param $p
|
||||||
|
*/
|
||||||
|
public static function copier($p)
|
||||||
|
{
|
||||||
|
return new Personne(
|
||||||
|
$p->id,
|
||||||
|
$p->nomPrenom,
|
||||||
|
$p->adresse,
|
||||||
|
$p->codePostal,
|
||||||
|
$p->ville,
|
||||||
|
$p->courriel);
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
/**
|
||||||
|
* ajouter un versement
|
||||||
|
* @param $idActivite
|
||||||
|
* @param $idTarif
|
||||||
|
* @param $montant
|
||||||
|
* @param $tauxReduction
|
||||||
*/
|
*/
|
||||||
public function ajouterVersement(
|
public function ajouterVersement(
|
||||||
$idActivite,
|
$idActivite,
|
||||||
$idTarif,
|
$idTarif,
|
||||||
$montant
|
$montant,
|
||||||
|
$tauxReduction
|
||||||
) {
|
) {
|
||||||
$this->versements[] =
|
$this->versements[] =
|
||||||
new Versement(
|
new Versement(
|
||||||
$idActivite,
|
$idActivite,
|
||||||
$idTarif,
|
$idTarif,
|
||||||
$montant
|
$montant,
|
||||||
|
$tauxReduction
|
||||||
);
|
);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -135,8 +135,8 @@ class RecusPDF extends tFPDF
|
|||||||
$nom,
|
$nom,
|
||||||
$lesMontants,
|
$lesMontants,
|
||||||
$adresse,
|
$adresse,
|
||||||
$ville,
|
$code_postal,
|
||||||
$code_postal)
|
$ville)
|
||||||
{
|
{
|
||||||
|
|
||||||
$this->AddPage();
|
$this->AddPage();
|
||||||
@ -164,9 +164,9 @@ class RecusPDF extends tFPDF
|
|||||||
"Le bénéficiaire reconnaît avoir reçu au titre des dons et versements ouvrant droit à réduction d'impôt :",
|
"Le bénéficiaire reconnaît avoir reçu au titre des dons et versements ouvrant droit à réduction d'impôt :",
|
||||||
'LTR',
|
'LTR',
|
||||||
1);
|
1);
|
||||||
foreach ($lesMontants as $montant)
|
foreach ($lesMontants as $taux => $montant)
|
||||||
{
|
{
|
||||||
$this->imprimer_montant(" - la somme de ", $montant, "aide aux personnes en difficulté");
|
$this->imprimer_montant(" - la somme de ", $montant, Utils::getLigneReduction($taux));
|
||||||
}
|
}
|
||||||
$this->Cell(0, 3, "", 'LR', 1);
|
$this->Cell(0, 3, "", 'LR', 1);
|
||||||
$this->imprimer_description('Date des versements : ',
|
$this->imprimer_description('Date des versements : ',
|
||||||
|
163
lib/Utils.php
163
lib/Utils.php
@ -7,10 +7,161 @@ use KD2\ZipWriter;
|
|||||||
|
|
||||||
class Utils
|
class Utils
|
||||||
{
|
{
|
||||||
|
// ------------------------------------------------------------
|
||||||
|
// test nouvelle organisation
|
||||||
|
/**
|
||||||
|
* @return tarifs demandés
|
||||||
|
* @param array $tarifs
|
||||||
|
*/
|
||||||
|
public static function getTarifs($tarifs)
|
||||||
|
{
|
||||||
|
$db = DB::getInstance();
|
||||||
|
$sql = sprintf(
|
||||||
|
'SELECT id, id_service as idActivite, label, description, amount as montant
|
||||||
|
FROM services_fees
|
||||||
|
WHERE services_fees.%s',
|
||||||
|
$db->where('id', $tarifs));
|
||||||
|
return $db->get($sql);
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @return activités correspondant aux tarifs demandés
|
||||||
|
* @param array $tarifs
|
||||||
|
*/
|
||||||
|
public static function getActivites($tarifs)
|
||||||
|
{
|
||||||
|
$db = DB::getInstance();
|
||||||
|
$sql = sprintf(
|
||||||
|
'SELECT services.id, services.label, services.description
|
||||||
|
FROM services
|
||||||
|
LEFT JOIN services_fees ON services_fees.id_service = services.id
|
||||||
|
WHERE services_fees.%s
|
||||||
|
GROUP BY services.id',
|
||||||
|
$db->where('id', $tarifs));
|
||||||
|
return $db->get($sql);
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @return versements correspondants à l'année et aux tarifs donnés
|
||||||
|
* @param $annee
|
||||||
|
* @param array $tarifs
|
||||||
|
*/
|
||||||
|
public static function getVersementsTarifs($annee, $tarifs)
|
||||||
|
{
|
||||||
|
$db = DB::getInstance();
|
||||||
|
$sql = sprintf(
|
||||||
|
'SELECT
|
||||||
|
services_fees.id as idTarif,
|
||||||
|
membres.id as idUser,
|
||||||
|
acc_transactions_lines.credit as versement,
|
||||||
|
acc_transactions.date
|
||||||
|
FROM acc_transactions_users
|
||||||
|
INNER JOIN membres on acc_transactions_users.id_user = membres.id
|
||||||
|
INNER JOIN acc_transactions on acc_transactions_users.id_transaction = acc_transactions.id
|
||||||
|
INNER JOIN services_users on acc_transactions_users.id_service_user = services_users.id
|
||||||
|
INNER JOIN services_fees on services_users.id_fee = services_fees.id
|
||||||
|
INNER JOIN acc_transactions_lines on acc_transactions_lines.id_transaction = acc_transactions.id
|
||||||
|
WHERE
|
||||||
|
(strftime(%s, acc_transactions.date) = "%d"
|
||||||
|
AND
|
||||||
|
services_fees.%s
|
||||||
|
AND
|
||||||
|
acc_transactions_lines.credit > 0)
|
||||||
|
ORDER by services_fees.id, membres.nom, acc_transactions.date',
|
||||||
|
'"%Y"',
|
||||||
|
$annee,
|
||||||
|
$db->where('id', $tarifs));
|
||||||
|
return $db->get($sql);
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Versements totaux par personne pour une année donnée
|
||||||
|
* @param année
|
||||||
|
*/
|
||||||
|
public static function getVersementsTotaux($annee)
|
||||||
|
{
|
||||||
|
$sql =
|
||||||
|
"SELECT
|
||||||
|
membres.id as idUser,
|
||||||
|
sum(acc_transactions_lines.credit) AS versement
|
||||||
|
FROM
|
||||||
|
acc_transactions_users,
|
||||||
|
membres,
|
||||||
|
acc_transactions
|
||||||
|
INNER JOIN acc_transactions_lines
|
||||||
|
ON acc_transactions_lines.id_transaction = acc_transactions.id
|
||||||
|
WHERE (
|
||||||
|
strftime('%Y', acc_transactions.date) = ?
|
||||||
|
AND
|
||||||
|
acc_transactions_lines.credit > 0
|
||||||
|
AND
|
||||||
|
acc_transactions_users.id_transaction = acc_transactions.id
|
||||||
|
AND
|
||||||
|
acc_transactions_users.id_user = membres.id
|
||||||
|
)
|
||||||
|
GROUP by acc_transactions_users.id_user
|
||||||
|
ORDER by membres.nom COLLATE U_NOCASE;
|
||||||
|
";
|
||||||
|
return DB::getInstance()->get($sql, $annee);
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @return personnes ayant versé des dons pour une année donnée
|
||||||
|
* @param $annee
|
||||||
|
*/
|
||||||
|
public static function getDonateurs($annee)
|
||||||
|
{
|
||||||
|
$sql =
|
||||||
|
"SELECT
|
||||||
|
membres.id as idUser,
|
||||||
|
membres.nom as nom,
|
||||||
|
membres.adresse as adresse,
|
||||||
|
membres.code_postal as codePostal,
|
||||||
|
membres.ville as ville
|
||||||
|
FROM
|
||||||
|
acc_transactions_users,
|
||||||
|
membres,
|
||||||
|
acc_transactions
|
||||||
|
INNER JOIN acc_transactions_lines
|
||||||
|
ON acc_transactions_lines.id_transaction = acc_transactions.id
|
||||||
|
WHERE (
|
||||||
|
strftime('%Y', acc_transactions.date) = ?
|
||||||
|
AND
|
||||||
|
acc_transactions_lines.credit > 0
|
||||||
|
AND
|
||||||
|
acc_transactions_users.id_transaction = acc_transactions.id
|
||||||
|
AND
|
||||||
|
acc_transactions_users.id_user = membres.id
|
||||||
|
)
|
||||||
|
GROUP by membres.id
|
||||||
|
ORDER by membres.nom COLLATE U_NOCASE;
|
||||||
|
";
|
||||||
|
return DB::getInstance()->get($sql, $annee);
|
||||||
|
}
|
||||||
|
|
||||||
|
public static function getLignesReduction($lesTaux)
|
||||||
|
{
|
||||||
|
foreach ($lesTaux as $elem)
|
||||||
|
{
|
||||||
|
$ligne = "taux " . $elem->taux . ", ligne " . $elem->ligne;
|
||||||
|
if ($elem->remarque != "") {
|
||||||
|
$ligne .= ", " . $elem->remarque;
|
||||||
|
}
|
||||||
|
$lignes[$elem->taux] = $ligne;
|
||||||
|
}
|
||||||
|
return $lignes;
|
||||||
|
}
|
||||||
|
public static function getLigneReduction($taux)
|
||||||
|
{
|
||||||
|
return $_SESSION['ligneReduction'][$taux];
|
||||||
|
}
|
||||||
|
|
||||||
|
// ------------------------------------------------------------
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* @return liste des activités
|
* @return liste des activités
|
||||||
*/
|
*/
|
||||||
public static function getActivites()
|
public static function getToutesActivites()
|
||||||
{
|
{
|
||||||
return DB::getInstance()->get(
|
return DB::getInstance()->get(
|
||||||
"SELECT
|
"SELECT
|
||||||
@ -26,7 +177,7 @@ class Utils
|
|||||||
* @return liste des tarifs d'une activité
|
* @return liste des tarifs d'une activité
|
||||||
* @param $activite : identifiant de l'activité
|
* @param $activite : identifiant de l'activité
|
||||||
*/
|
*/
|
||||||
public static function getTarifs($activite)
|
public static function getTarifsActivite($activite)
|
||||||
{
|
{
|
||||||
return DB::getInstance()->get(
|
return DB::getInstance()->get(
|
||||||
"SELECT
|
"SELECT
|
||||||
@ -163,10 +314,10 @@ class Utils
|
|||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* liste du total de versements par personne pour une année donnée
|
* Versements totaux par personne pour une année donnée
|
||||||
* @param année
|
* @param année
|
||||||
*/
|
*/
|
||||||
public static function getVersementsTotaux($annee) {
|
public static function getVersementsTotaux_old($annee) {
|
||||||
$sql =
|
$sql =
|
||||||
"SELECT
|
"SELECT
|
||||||
acc_transactions_users.id_user as idUser,
|
acc_transactions_users.id_user as idUser,
|
||||||
@ -191,7 +342,7 @@ 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 NOCASE;
|
ORDER by membres.nom COLLATE U_NOCASE;
|
||||||
";
|
";
|
||||||
return DB::getInstance()->get($sql, $annee);
|
return DB::getInstance()->get($sql, $annee);
|
||||||
}
|
}
|
||||||
@ -239,7 +390,7 @@ class Utils
|
|||||||
* @param tableau des versements par personne
|
* @param tableau des versements par personne
|
||||||
*/
|
*/
|
||||||
static function genererRecus() {
|
static function genererRecus() {
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
|
@ -7,14 +7,18 @@ class Versement
|
|||||||
public $idActivite;
|
public $idActivite;
|
||||||
public $idTarif;
|
public $idTarif;
|
||||||
public $montant;
|
public $montant;
|
||||||
|
public $tauxReduction;
|
||||||
|
|
||||||
public function __construct(
|
public function __construct(
|
||||||
$idActivite,
|
$idActivite,
|
||||||
$idTarif,
|
$idTarif,
|
||||||
$montant
|
$montant,
|
||||||
) {
|
$tauxReduction
|
||||||
|
)
|
||||||
|
{
|
||||||
$this->idActivite = $idActivite;
|
$this->idActivite = $idActivite;
|
||||||
$this->idTarif = $idTarif;
|
$this->idTarif = $idTarif;
|
||||||
$this->montant = $montant;
|
$this->montant = $montant;
|
||||||
|
$this->tauxReduction = $tauxReduction;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -2,7 +2,7 @@
|
|||||||
{include file="%s/templates/_nav.tpl"|args:$plugin_root current_nav="index"}
|
{include file="%s/templates/_nav.tpl"|args:$plugin_root current_nav="index"}
|
||||||
|
|
||||||
<h2>Choisir l'année fiscale</h2>
|
<h2>Choisir l'année fiscale</h2>
|
||||||
<form id="formulaire_saisie" method="post" action="">
|
<form id="formulaire_saisie" method="post" action="action.php">
|
||||||
<fieldset>
|
<fieldset>
|
||||||
{* <legend>Choisir l'année fiscale</legend> *}
|
{* <legend>Choisir l'année fiscale</legend> *}
|
||||||
<select id="annee_recu" name="annee_recu">
|
<select id="annee_recu" name="annee_recu">
|
||||||
@ -47,15 +47,30 @@
|
|||||||
</dl>
|
</dl>
|
||||||
</fieldset>
|
</fieldset>
|
||||||
</div>
|
</div>
|
||||||
|
|
||||||
|
<div id="div_taux_reduc" class="tous hidden">
|
||||||
|
<h2>Choisir le taux de réduction</h2>
|
||||||
|
<fieldset>
|
||||||
|
{foreach from=$plugin_config->reduction item="reduc"}
|
||||||
|
<span class="radio-btn">
|
||||||
|
<input type="radio" id="{$reduc->taux}"
|
||||||
|
name="taux_reduction" value="{$reduc->taux}" />
|
||||||
|
<label for="{$reduc->taux}">{$reduc->taux}{if $reduc->remarque != ""} - {$reduc->remarque}{/if}</label>
|
||||||
|
</span>
|
||||||
|
{/foreach}
|
||||||
|
</fieldset>
|
||||||
|
</div>
|
||||||
|
|
||||||
<div id="generer_tous" class="tous hidden">
|
<div id="generer_tous" class="tous hidden">
|
||||||
<p class=" submit">
|
<p class=" submit">
|
||||||
{csrf_field key="generer_tous_recus"}
|
{csrf_field key="generer_tous_recus"}
|
||||||
{button type="submit" name="generer_tous" label="Poursuivre" shape="right" class="main" onclick="aiguiller(this.form, 'versements_personnes');" }
|
{button type="submit" name="generer_tous" label="Poursuivre" shape="right" class="main" onclick="return verifierRadio('div_taux_reduc');" }
|
||||||
</p>
|
</p>
|
||||||
</div>
|
</div>
|
||||||
|
|
||||||
<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>
|
||||||
<table class="list">
|
<table class="list">
|
||||||
<thead>
|
<thead>
|
||||||
<tr>
|
<tr>
|
||||||
@ -76,16 +91,13 @@
|
|||||||
<span>{$activite.titreActivite} - {$activite.titreTarif}</span>
|
<span>{$activite.titreActivite} - {$activite.titreTarif}</span>
|
||||||
</td>
|
</td>
|
||||||
<td>
|
<td>
|
||||||
<span class="radio-btn">
|
{foreach from=$plugin_config->reduction item="reduc"}
|
||||||
<input type="radio" id="taux_normal_{$activite.idTarif}"
|
<span class="radio-btn">
|
||||||
name="taux_reduction_{$activite.idTarif}" value="{$plugin_config->reduction[0]->taux}" disabled />
|
<input type="radio" id="taux_{$reduc->taux}_{$activite.idTarif}"
|
||||||
<label for="taux_normal_{$activite.idTarif}">normal</label>
|
name="taux_reduction_{$activite.idTarif}" value="{$reduc->taux}" disabled />
|
||||||
</span>
|
<label for="taux_{$reduc->taux}_{$activite.idTarif}">{$reduc->taux}{if $reduc->remarque != ""} - {$reduc->remarque}{/if}</label>
|
||||||
<span class=" radio-btn">
|
</span>
|
||||||
<input type="radio" id="taux_majore_{$activite.idTarif}"
|
{/foreach}
|
||||||
name="taux_reduction_{$activite.idTarif}" value="{$plugin_config->reduction[1]->taux}" disabled />
|
|
||||||
<label for="taux_majore_{$activite.idTarif}">majoré</label>
|
|
||||||
</span>
|
|
||||||
</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>
|
||||||
@ -93,13 +105,14 @@
|
|||||||
{/foreach}
|
{/foreach}
|
||||||
</tbody>
|
</tbody>
|
||||||
</table>
|
</table>
|
||||||
<p class="help">Si vous ne savez pas quel taux de réduction utiliser, n'en choisissez aucun</p>
|
{*<p class="help">Si vous ne savez pas quel taux de réduction utiliser, n'en choisissez aucun</p>*}
|
||||||
|
</fieldset>
|
||||||
</div>
|
</div>
|
||||||
|
|
||||||
<div id="generer_activites" class="activites hidden">
|
<div id="generer_activites" class="activites hidden">
|
||||||
<p class=" submit">
|
<p class=" submit">
|
||||||
{csrf_field key="generer_recus_activites"}
|
{csrf_field key="generer_recus_activites"}
|
||||||
{button type="submit" name="generer_activites" label="Poursuivre" shape="right" class="main" onclick="aiguiller(this.form, 'versements_activites');" }
|
{button type="submit" name="generer_activites" label="Poursuivre" shape="right" class="main" onclick="return verifierCases('liste_activites_tarifs');" }
|
||||||
</p>
|
</p>
|
||||||
</div>
|
</div>
|
||||||
</form>
|
</form>
|
||||||
@ -107,7 +120,7 @@
|
|||||||
<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
|
// 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;
|
||||||
|
@ -3,80 +3,64 @@
|
|||||||
|
|
||||||
<h2>Liste des versements par activité et tarif</h2>
|
<h2>Liste des versements par activité et tarif</h2>
|
||||||
|
|
||||||
{* TODO : vérifier le détail de ce div *}
|
|
||||||
<div class="year-header noprint">
|
<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="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>
|
<button type="button" data-icon="↑" class="icn-btn" id="close_details">Replier toutes les activités</button>
|
||||||
</div>
|
</div>
|
||||||
|
|
||||||
<form method="post" action="generer_activites.php">
|
{*
|
||||||
|
<form method="post" id="imprimer_activites" action="imprimer_activites.php">
|
||||||
|
<input type="submit" value="Fabriquer PDF">
|
||||||
|
</form>
|
||||||
|
*}
|
||||||
|
|
||||||
|
<form method="post" id="versements_activites" action="generer_activites.php">
|
||||||
|
|
||||||
<fieldset class="versements" id="versements_global">
|
<fieldset class="versements" id="versements_global">
|
||||||
<input type="checkbox" class="check_global" id="check_global" onclick="cocherDecocherTout(check_global)" />
|
<input type="checkbox" class="check_global" id="check_global" onclick="cocherDecocherTout(check_global)" />
|
||||||
<label for="check_global">Cliquer pour cocher toutes les lignes</label>
|
<label for="check_global">Cliquer pour cocher toutes les lignes</label>
|
||||||
</fieldset>
|
</fieldset>
|
||||||
|
|
||||||
{* Itération sur les activités *}
|
{* Itération sur les versements *}
|
||||||
{foreach from=$listeParActiviteEtTarif item="activite"}
|
{foreach from=$lesVersements key="i" item="versement"}
|
||||||
|
{if $i == 0}
|
||||||
{* Itération sur les tarifs de l'activité *}
|
{* premier versement *}
|
||||||
{foreach from=$activite->tarifs item="tarif"}
|
<?php
|
||||||
|
$tarifCourant = $versement->idTarif;
|
||||||
<details open="open">
|
$personneCourante = $versement->idUser;
|
||||||
<summary class="activite">
|
?>
|
||||||
<h3>Activité « {$activite->label} »</h3>
|
{afficher_debut_tarif versement=$versement}
|
||||||
{if !empty($activite->description)}
|
{afficher_debut_personne versement=$versement}
|
||||||
<h4>{$activite->description}</h4>
|
{afficher_versement versement=$versement rang=$i}
|
||||||
{/if}
|
{else}
|
||||||
<h4>tarif « {$tarif->titreTarif} », montant :
|
{* autre versement *}
|
||||||
{if $tarif->montantTarif > 0}{$tarif->montantTarif|raw|money}
|
{if $versement.idTarif != $tarifCourant}
|
||||||
€{else}libre
|
{* changement de tarif *}
|
||||||
{/if}
|
</fieldset> {* fin versements d'une personne *}
|
||||||
</h4>
|
</details>
|
||||||
</summary>
|
<?php
|
||||||
|
$tarifCourant = $versement->idTarif;
|
||||||
{*
|
$personneCourante = $versement->idUser;
|
||||||
Itération sur les versements d'un tarif d'une activité
|
?>
|
||||||
présentation : une table pour les versements d'une personne
|
{afficher_debut_tarif versement=$versement}
|
||||||
*}
|
{afficher_debut_personne versement=$versement}
|
||||||
<?php $currentUser = -1; $firstUser = true; ?>
|
{afficher_versement versement=$versement rang=$i}
|
||||||
{foreach from=$lesVersements key="rang" item="versement"}
|
{elseif $versement.idUser != $personneCourante}
|
||||||
{if $versement.idActivite == $activite->idActivite &&
|
{* changement de personne *}
|
||||||
$versement.idTarif == $tarif->idTarif}
|
</fieldset>
|
||||||
{if $versement.idUser != $currentUser}
|
<?php
|
||||||
{* changement de personne *}
|
$personneCourante = $versement->idUser;
|
||||||
{if $firstUser}
|
?>
|
||||||
<?php $firstUser = false; ?>
|
{afficher_debut_personne versement=$versement}
|
||||||
{else}
|
{afficher_versement versement=$versement rang=$i}
|
||||||
{* fermer le tableau précédent *}
|
{else}
|
||||||
</fieldset>
|
{* même personne *}
|
||||||
{/if}
|
{afficher_versement versement=$versement rang=$i}
|
||||||
{* Afficher les infos de la personne *}
|
{/if}
|
||||||
<?php $idVersements = $versement->idTarif."_".$versement->idUser; ?>
|
{/if}
|
||||||
<h3 class="personne">Versements de {$versement.nom} : <span id="total_{$idVersements}">0,00 €</span></h3>
|
{/foreach} {* Itération sur les versements *}
|
||||||
<fieldset class="versements" id="versements_{$idVersements}">
|
</fieldset>
|
||||||
<input type="checkbox" class="check_{$idVersements}" id="check_{$idVersements}"
|
</details>
|
||||||
onclick="cocherDecocherPersonne(check_{$idVersements}, total_{$idVersements})" />
|
|
||||||
<label for="check_{$idVersements}">Cliquer pour cocher toutes les lignes</label>
|
|
||||||
<br />
|
|
||||||
<hr>
|
|
||||||
<?php $currentUser = $versement->idUser; ?>
|
|
||||||
{/if}
|
|
||||||
{* afficher les infos du versement de la personne*}
|
|
||||||
<div {if $rang%2==0}class="pair" {else}class="impair" {/if}>
|
|
||||||
<input type="checkbox" class="check_{$idVersements}" id="check_{$idVersements}_{$rang}"
|
|
||||||
name="selected[]" value={$rang}
|
|
||||||
onclick="cocherDecocherVersement(check_{$idVersements}_{$rang}, total_{$idVersements})" />
|
|
||||||
<label for=check_{$idVersements}_{$rang}></label>
|
|
||||||
<span class="montant">{$versement.versement|raw|money}</span>
|
|
||||||
<span>{$versement.date|date_format:"%d/%m/%Y"}</span>
|
|
||||||
</div>
|
|
||||||
{/if}
|
|
||||||
{/foreach} {* Itération sur les versements *}
|
|
||||||
</fieldset>
|
|
||||||
</details>
|
|
||||||
{/foreach} {* Itération sur les tarifs de l'activité *}
|
|
||||||
{/foreach} {* Itération sur les activités *}
|
|
||||||
|
|
||||||
<input type="submit" value="Générer les reçus" onclick="return verifierChoix(this.form)">
|
<input type="submit" value="Générer les reçus" onclick="return verifierChoix(this.form)">
|
||||||
</form>
|
</form>
|
||||||
|
@ -17,8 +17,8 @@
|
|||||||
<th>Nom Prénom</th>
|
<th>Nom Prénom</th>
|
||||||
<th>Montant</th>
|
<th>Montant</th>
|
||||||
<th>Adresse</th>
|
<th>Adresse</th>
|
||||||
<th>Ville</th>
|
|
||||||
<th>Code postal</th>
|
<th>Code postal</th>
|
||||||
|
<th>Ville</th>
|
||||||
</tr>
|
</tr>
|
||||||
</thead>
|
</thead>
|
||||||
<tbody>
|
<tbody>
|
||||||
@ -31,11 +31,11 @@
|
|||||||
value=$rang}
|
value=$rang}
|
||||||
</td>
|
</td>
|
||||||
<td>{$versement.idUser}</td>
|
<td>{$versement.idUser}</td>
|
||||||
<td>{$versement.nom}</td>
|
<td>{$lesDonateurs[$versement.idUser]->nomPrenom}</td>
|
||||||
<td class="montant">{$versement.montant|raw|money}</td>
|
<td class="montant">{$versement.versement|raw|money}</td>
|
||||||
<td>{$versement.adresse}</td>
|
<td>{$lesDonateurs[$versement.idUser]->adresse}</td>
|
||||||
<td>{$versement.ville}</td>
|
<td>{$lesDonateurs[$versement.idUser]->codePostal}</td>
|
||||||
<td>{$versement.codePostal}</td>
|
<td>{$lesDonateurs[$versement.idUser]->ville}</td>
|
||||||
</tr>
|
</tr>
|
||||||
{/foreach}
|
{/foreach}
|
||||||
</tbody>
|
</tbody>
|
||||||
|
@ -4,7 +4,7 @@ namespace Garradin;
|
|||||||
|
|
||||||
$session->requireAccess($session::SECTION_CONFIG, $session::ACCESS_ADMIN);
|
$session->requireAccess($session::SECTION_CONFIG, $session::ACCESS_ADMIN);
|
||||||
$art_sel=f('articlesCGI') ? : [];
|
$art_sel=f('articlesCGI') ? : [];
|
||||||
error_log("art sel=" . print_r($art_sel, true) . "\n");
|
|
||||||
if (f('save') && $form->check('recusfiscaux_config'))
|
if (f('save') && $form->check('recusfiscaux_config'))
|
||||||
{
|
{
|
||||||
try {
|
try {
|
||||||
@ -18,9 +18,7 @@ if (f('save') && $form->check('recusfiscaux_config'))
|
|||||||
foreach ($art_sel as $article) {
|
foreach ($art_sel as $article) {
|
||||||
$confArticles[$article]->valeur = 1;
|
$confArticles[$article]->valeur = 1;
|
||||||
}
|
}
|
||||||
error_log("confArticles=" . print_r($confArticles, true) . "\n");
|
|
||||||
$plugin->setConfig("articlesCGI", $confArticles);
|
$plugin->setConfig("articlesCGI", $confArticles);
|
||||||
error_log("plugin->config=" . print_r($plugin->getConfig("articlesCGI"), true) . "\n");
|
|
||||||
\Garradin\Utils::redirect(PLUGIN_URL . 'config.php?ok');
|
\Garradin\Utils::redirect(PLUGIN_URL . 'config.php?ok');
|
||||||
}
|
}
|
||||||
catch (UserException $e)
|
catch (UserException $e)
|
||||||
|
@ -11,10 +11,9 @@ $lesLignes = f('selected');
|
|||||||
|
|
||||||
// filtrer les versements sélectionnés
|
// filtrer les versements sélectionnés
|
||||||
$versementsSelectionnes = array();
|
$versementsSelectionnes = array();
|
||||||
foreach ($lesLignes as $indice => $ligne) {
|
foreach ($lesLignes as $ligne) {
|
||||||
$versementsSelectionnes[] = $_SESSION['lesVersements'][$ligne];
|
$versementsSelectionnes[] = $_SESSION['lesVersements'][$ligne];
|
||||||
}
|
}
|
||||||
|
|
||||||
// cumuler les versements d'une personne
|
// cumuler les versements d'une personne
|
||||||
$totalPersonnes = cumulerVersements($versementsSelectionnes);
|
$totalPersonnes = cumulerVersements($versementsSelectionnes);
|
||||||
|
|
||||||
@ -42,8 +41,14 @@ foreach ($totalPersonnes as $idPersonne => $personne) {
|
|||||||
);
|
);
|
||||||
// extraire les montants des versements
|
// extraire les montants des versements
|
||||||
$lesMontants = array();
|
$lesMontants = array();
|
||||||
foreach ($personne->versements as $versement) {
|
foreach ($personne->versements as $versement)
|
||||||
$lesMontants[] = $versement->montant;
|
{
|
||||||
|
if (array_key_exists($versement->tauxReduction, $lesMontants)) {
|
||||||
|
$lesMontants[$versement->tauxReduction] += $versement->montant;
|
||||||
|
}
|
||||||
|
else {
|
||||||
|
$lesMontants[$versement->tauxReduction] = $versement->montant;
|
||||||
|
}
|
||||||
}
|
}
|
||||||
$pdf->imprimer_recu(
|
$pdf->imprimer_recu(
|
||||||
$_SESSION['annee_recu'],
|
$_SESSION['annee_recu'],
|
||||||
@ -51,8 +56,8 @@ foreach ($totalPersonnes as $idPersonne => $personne) {
|
|||||||
$personne->nomPrenom,
|
$personne->nomPrenom,
|
||||||
$lesMontants,
|
$lesMontants,
|
||||||
$personne->adresse,
|
$personne->adresse,
|
||||||
$personne->ville,
|
$personne->codePostal,
|
||||||
$personne->codePostal
|
$personne->ville
|
||||||
);
|
);
|
||||||
// fabriquer le nom du fichier PDF
|
// fabriquer le nom du fichier PDF
|
||||||
$nom = str_replace(' ', '_', $personne->nomPrenom);
|
$nom = str_replace(' ', '_', $personne->nomPrenom);
|
||||||
@ -73,44 +78,38 @@ $fichierZip = Utils::makeArchive(
|
|||||||
);
|
);
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Cumuler les versements de chaque personne par tarif et activité
|
* Cumuler les versements de chaque personne par tarif
|
||||||
* @param tableau des versements
|
* @param tableau des versements triés par idTarif, idUser, date
|
||||||
* @return tableau des versements cumulés
|
* @return tableau des versements cumulés : id => Personne
|
||||||
*/
|
*/
|
||||||
function cumulerVersements($versements)
|
function cumulerVersements($versements)
|
||||||
{
|
{
|
||||||
$totalPersonnes = array();
|
$totalPersonnes = array();
|
||||||
$idActivite_courant = -1;
|
|
||||||
$idTarif_courant = -1;
|
$idTarif_courant = -1;
|
||||||
$idPersonne_courant = -1;
|
$idPersonne_courant = -1;
|
||||||
$totalVersements = 0;
|
$totalVersements = 0;
|
||||||
foreach ($versements as $ligne) {
|
foreach ($versements as $ligne)
|
||||||
|
{
|
||||||
if (
|
if (
|
||||||
$ligne->idActivite != $idActivite_courant ||
|
|
||||||
$ligne->idTarif != $idTarif_courant ||
|
$ligne->idTarif != $idTarif_courant ||
|
||||||
$ligne->idUser != $idPersonne_courant
|
$ligne->idUser != $idPersonne_courant
|
||||||
) {
|
)
|
||||||
if ($idActivite_courant != -1) {
|
{
|
||||||
$totalPersonnes["$idPersonne_courant"]->ajouterVersement(
|
if ($idTarif_courant != -1) {
|
||||||
$idActivite_courant,
|
$totalPersonnes[$idPersonne_courant]->ajouterVersement(
|
||||||
|
$_SESSION['lesTarifs'][$idTarif_courant]->idActivite,
|
||||||
$idTarif_courant,
|
$idTarif_courant,
|
||||||
$totalVersements/100
|
$totalVersements/100,
|
||||||
|
$_SESSION['tauxSelectionnes'][$idTarif_courant]
|
||||||
);
|
);
|
||||||
}
|
}
|
||||||
$idActivite_courant = $ligne->idActivite;
|
|
||||||
$idTarif_courant = $ligne->idTarif;
|
$idTarif_courant = $ligne->idTarif;
|
||||||
$idPersonne_courant = $ligne->idUser;
|
$idPersonne_courant = $ligne->idUser;
|
||||||
$totalVersements = $ligne->versement;
|
$totalVersements = $ligne->versement;
|
||||||
// créer les infos de la personne, sauf si elle est déjà présente
|
// créer les infos de la personne, sauf si elle est déjà présente
|
||||||
if (!array_key_exists($idPersonne_courant, $totalPersonnes)) {
|
if (!array_key_exists($idPersonne_courant, $totalPersonnes))
|
||||||
$totalPersonnes["$idPersonne_courant"] = new Personne(
|
{
|
||||||
$ligne->idUser,
|
$totalPersonnes["$idPersonne_courant"] = Personne::copier($_SESSION['membresDonateurs'][$ligne->idUser]);
|
||||||
$ligne->nom,
|
|
||||||
$ligne->adresse,
|
|
||||||
$ligne->ville,
|
|
||||||
$ligne->codePostal,
|
|
||||||
$ligne->courriel
|
|
||||||
);
|
|
||||||
}
|
}
|
||||||
} else {
|
} else {
|
||||||
// cumuler versements
|
// cumuler versements
|
||||||
@ -118,11 +117,12 @@ function cumulerVersements($versements)
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
// et le dernier
|
// et le dernier
|
||||||
$totalPersonnes["$idPersonne_courant"]->ajouterVersement(
|
$totalPersonnes[$idPersonne_courant]->ajouterVersement(
|
||||||
$idActivite_courant,
|
$_SESSION['lesTarifs'][$idTarif_courant]->idActivite,
|
||||||
$idTarif_courant,
|
$idTarif_courant,
|
||||||
$totalVersements/100
|
$totalVersements/100,
|
||||||
);
|
$_SESSION['tauxSelectionnes'][$idTarif_courant]
|
||||||
|
);
|
||||||
|
|
||||||
return $totalPersonnes;
|
return $totalPersonnes;
|
||||||
}
|
}
|
||||||
|
@ -11,24 +11,19 @@ $lesLignes = f('selected');
|
|||||||
|
|
||||||
// filtrer les versements sélectionnés
|
// filtrer les versements sélectionnés
|
||||||
$versementsSelectionnes = array();
|
$versementsSelectionnes = array();
|
||||||
foreach ($lesLignes as $indice => $ligne) {
|
foreach ($lesLignes as $ligne) {
|
||||||
$versementsSelectionnes[] = $_SESSION['lesVersementsTotaux'][$ligne];
|
$versementsSelectionnes[] = $_SESSION['lesVersementsTotaux'][$ligne];
|
||||||
}
|
}
|
||||||
|
|
||||||
error_log("versements sélectionnés " . print_r($versementsSelectionnes, true));
|
|
||||||
|
|
||||||
// générer les reçus
|
// générer les reçus
|
||||||
$nomAsso = Utils::getNomAsso();
|
$nomAsso = Utils::getNomAsso();
|
||||||
$adresseAsso = Utils::getAdresseAsso();
|
$adresseAsso = Utils::getAdresseAsso();
|
||||||
|
|
||||||
// TODO
|
|
||||||
// - associer le taux de réduction à chaque montant total
|
|
||||||
|
|
||||||
$logoCERFA = PLUGIN_ROOT . "/data/logoCerfa.png";
|
$logoCERFA = PLUGIN_ROOT . "/data/logoCerfa.png";
|
||||||
$signature = PLUGIN_ROOT . "/data/default_signature.png";
|
$signature = PLUGIN_ROOT . "/data/default_signature.png";
|
||||||
$listeFichiers = [];
|
$listeFichiers = [];
|
||||||
|
|
||||||
foreach ($versementsSelectionnes as $idPersonne => $personne) {
|
foreach ($versementsSelectionnes as $ligne) {
|
||||||
// générer un fichier par reçu
|
// générer un fichier par reçu
|
||||||
$pdf = new RecusPDF(
|
$pdf = new RecusPDF(
|
||||||
'DejaVu',
|
'DejaVu',
|
||||||
@ -39,17 +34,18 @@ foreach ($versementsSelectionnes as $idPersonne => $personne) {
|
|||||||
$signature
|
$signature
|
||||||
);
|
);
|
||||||
// extraire les montants des versements
|
// extraire les montants des versements
|
||||||
|
$lesMontants[$_SESSION['taux_reduction']] = $ligne->versement/100;
|
||||||
$pdf->imprimer_recu(
|
$pdf->imprimer_recu(
|
||||||
$_SESSION['annee_recu'],
|
$_SESSION['annee_recu'],
|
||||||
$personne->idUser,
|
$ligne->idUser,
|
||||||
$personne->nom,
|
$_SESSION['membresDonateurs'][$ligne->idUser]->nomPrenom,
|
||||||
array($personne->montant/100),
|
$lesMontants,
|
||||||
$personne->adresse,
|
$_SESSION['membresDonateurs'][$ligne->idUser]->adresse,
|
||||||
$personne->ville,
|
$_SESSION['membresDonateurs'][$ligne->idUser]->codePostal,
|
||||||
$personne->codePostal
|
$_SESSION['membresDonateurs'][$ligne->idUser]->ville
|
||||||
);
|
);
|
||||||
// fabriquer le nom du fichier PDF
|
// fabriquer le nom du fichier PDF
|
||||||
$nom = str_replace(' ', '_', $personne->nom);
|
$nom = str_replace(' ', '_', $_SESSION['membresDonateurs'][$ligne->idUser]->nomPrenom);
|
||||||
$nom = str_replace("'", "", $nom);
|
$nom = str_replace("'", "", $nom);
|
||||||
// $nomFichier = Utils::getPDFDirectory() . "/" . 'recu_' . $annee_recu . '_' . $nom . '.pdf';
|
// $nomFichier = Utils::getPDFDirectory() . "/" . 'recu_' . $annee_recu . '_' . $nom . '.pdf';
|
||||||
$nomFichier = PLUGIN_ROOT . '/pdf/recu_' . $_SESSION['annee_recu'] . '_' . $nom . '.pdf';
|
$nomFichier = PLUGIN_ROOT . '/pdf/recu_' . $_SESSION['annee_recu'] . '_' . $nom . '.pdf';
|
||||||
|
@ -11,6 +11,9 @@ if ($anneesFiscales[0] < $anneeCourante) {
|
|||||||
array_unshift($anneesFiscales, $anneeCourante);
|
array_unshift($anneesFiscales, $anneeCourante);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// libellés pour les taux de réduction
|
||||||
|
$_SESSION['ligneReduction'] = Utils::getLignesReduction($plugin->getConfig('reduction'));
|
||||||
|
|
||||||
// liste des activités, cotisations et comptes associés
|
// liste des activités, cotisations et comptes associés
|
||||||
$activitesTarifsComptes = Utils::getActivitesTarifsEtComptes();
|
$activitesTarifsComptes = Utils::getActivitesTarifsEtComptes();
|
||||||
|
|
||||||
|
@ -3,7 +3,8 @@
|
|||||||
* (dé)sélectionner toutes les cases à cocher de toutes les activités
|
* (dé)sélectionner toutes les cases à cocher de toutes les activités
|
||||||
* @param id de la case globale
|
* @param id de la case globale
|
||||||
*/
|
*/
|
||||||
function cocherDecocherTout(idCaseGlobale) {
|
function cocherDecocherTout(idCaseGlobale)
|
||||||
|
{
|
||||||
// chercher le formulaire englobant
|
// chercher le formulaire englobant
|
||||||
var formulaire = idCaseGlobale.closest("form");
|
var formulaire = idCaseGlobale.closest("form");
|
||||||
// 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>
|
||||||
@ -39,7 +40,8 @@ function cocherDecocherTout(idCaseGlobale) {
|
|||||||
* @param id de la case qui a été cochée
|
* @param id de la case qui a été cochée
|
||||||
* @param id de l'élément où afficher le total
|
* @param id de l'élément où afficher le total
|
||||||
*/
|
*/
|
||||||
function cocherDecocherPersonne(idCase, idTotal) {
|
function cocherDecocherPersonne(idCase, idTotal)
|
||||||
|
{
|
||||||
// chercher le fieldset englobant
|
// chercher le fieldset englobant
|
||||||
var fieldset = idCase.closest("fieldset");
|
var fieldset = idCase.closest("fieldset");
|
||||||
var listeCases = fieldset.querySelectorAll("input[type=checkbox]");
|
var listeCases = fieldset.querySelectorAll("input[type=checkbox]");
|
||||||
@ -67,7 +69,8 @@ function cocherDecocherPersonne(idCase, idTotal) {
|
|||||||
* @param id de la case qui a été cochée
|
* @param id de la case qui a été cochée
|
||||||
* @param id de l'élément où afficher le total
|
* @param id de l'élément où afficher le total
|
||||||
*/
|
*/
|
||||||
function cocherDecocherVersement(idCase, idTotal) {
|
function cocherDecocherVersement(idCase, idTotal)
|
||||||
|
{
|
||||||
var fieldset = idCase.closest("fieldset");
|
var fieldset = idCase.closest("fieldset");
|
||||||
var listeCases = fieldset.querySelectorAll("input[type=checkbox]");
|
var listeCases = fieldset.querySelectorAll("input[type=checkbox]");
|
||||||
var listeMontants = fieldset.querySelectorAll("span.montant");
|
var listeMontants = fieldset.querySelectorAll("span.montant");
|
||||||
@ -80,7 +83,8 @@ function cocherDecocherVersement(idCase, idTotal) {
|
|||||||
* @param listes des montants associés
|
* @param listes des montants associés
|
||||||
* @param id de l'élément où afficher le total
|
* @param id de l'élément où afficher le total
|
||||||
*/
|
*/
|
||||||
function calculerTotal(listeCases, listeMontants, idTotal) {
|
function calculerTotal(listeCases, listeMontants, idTotal)
|
||||||
|
{
|
||||||
var total = 0;
|
var total = 0;
|
||||||
for (var i = 1; i < listeCases.length; ++i)
|
for (var i = 1; i < listeCases.length; ++i)
|
||||||
{
|
{
|
||||||
@ -118,7 +122,11 @@ function verifierChoix(formulaire)
|
|||||||
return ok;
|
return ok;
|
||||||
}
|
}
|
||||||
|
|
||||||
function afficherMasquer(formulaire, nomClasse1, nomClasse2) {
|
/**
|
||||||
|
* fonction appelée pour afficher et masquer des portions de formulaire
|
||||||
|
*/
|
||||||
|
function afficherMasquer(formulaire, nomClasse1, nomClasse2)
|
||||||
|
{
|
||||||
for (var elem of formulaire.querySelectorAll(nomClasse1)) {
|
for (var elem of formulaire.querySelectorAll(nomClasse1)) {
|
||||||
elem.classList.remove('hidden');
|
elem.classList.remove('hidden');
|
||||||
}
|
}
|
||||||
@ -127,13 +135,53 @@ function afficherMasquer(formulaire, nomClasse1, nomClasse2) {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
// aiguiller la suite vers la page passée en paramètre
|
// vérifier
|
||||||
function aiguiller(formulaire, pageSuivante) {
|
// - qu'au moins une activité/tarif est sélectionnée
|
||||||
formulaire.action = pageSuivante + ".php";
|
// - qu'un radio de chaque activité/tarif sélectionné a été sélectionné :)
|
||||||
|
function verifierCases(idElem)
|
||||||
|
{
|
||||||
|
var div = document.getElementById(idElem);
|
||||||
|
var nbChoix = 0;
|
||||||
|
// parcourir les cases à cocher
|
||||||
|
for (var idCase of div.querySelectorAll("input[type=checkbox]"))
|
||||||
|
{
|
||||||
|
if (idCase.checked) {
|
||||||
|
++nbChoix;
|
||||||
|
// vérifier qu'un radio de la même ligne est sélectionné
|
||||||
|
var ligneCorrecte = false;
|
||||||
|
// trouver la ligne englobante
|
||||||
|
var ligne = idCase.closest("tr");
|
||||||
|
for (var idRadio of ligne.querySelectorAll('input[type=radio]'))
|
||||||
|
{
|
||||||
|
if (idRadio.checked) { ligneCorrecte = true; break; }
|
||||||
|
}
|
||||||
|
if (! ligneCorrecte) {
|
||||||
|
alert("Erreur : il faut sélectionner un taux de réduction dans chaque ligne cochée");
|
||||||
|
return false;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
if (nbChoix == 0) {
|
||||||
|
alert("Erreur : il faut sélectionner au moins une activité/tarif");
|
||||||
|
}
|
||||||
|
return nbChoix != 0;
|
||||||
|
}
|
||||||
|
|
||||||
|
// vérifier qu'un radio a été sélectionné dans la div paramètre
|
||||||
|
function verifierRadio(idElem)
|
||||||
|
{
|
||||||
|
var div = document.getElementById(idElem);
|
||||||
|
for (var idRadio of div.querySelectorAll('input[type=radio]'))
|
||||||
|
{
|
||||||
|
if (idRadio.checked) { return true; }
|
||||||
|
}
|
||||||
|
alert("Erreur : il faut sélectionner un taux de réduction");
|
||||||
|
return false;
|
||||||
}
|
}
|
||||||
|
|
||||||
// inutilisé
|
// inutilisé
|
||||||
function activerDesactiverRadio(evt) {
|
function activerDesactiverRadio(evt)
|
||||||
|
{
|
||||||
var idCase = evt.target;
|
var idCase = evt.target;
|
||||||
// checher la ligne englobante ( <tr>)
|
// checher la ligne englobante ( <tr>)
|
||||||
var ligne = idCase.closest("tr");
|
var ligne = idCase.closest("tr");
|
||||||
@ -148,21 +196,12 @@ function activerDesactiverRadio(evt) {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
|
||||||
* indiquer le nom du script php à activer
|
|
||||||
* @param formulaire
|
|
||||||
* @param script php
|
|
||||||
*/
|
|
||||||
function activer(formulaire, script) {
|
|
||||||
formulaire.action = script;
|
|
||||||
}
|
|
||||||
|
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Associer un écouteur à la première case à cocher de chaque table
|
* Associer un écouteur à la première case à cocher de chaque table
|
||||||
* @remarks : n'est plus utile
|
* @remarks : n'est plus utile
|
||||||
*/
|
*/
|
||||||
function activerListener() {
|
function activerListener()
|
||||||
|
{
|
||||||
// parcourir les tables
|
// parcourir les tables
|
||||||
const lesTables = document.querySelectorAll("table.list");
|
const lesTables = document.querySelectorAll("table.list");
|
||||||
for (let i = 0; i < lesTables.length; ++i) {
|
for (let i = 0; i < lesTables.length; ++i) {
|
||||||
|
@ -2,41 +2,146 @@
|
|||||||
|
|
||||||
namespace Garradin;
|
namespace Garradin;
|
||||||
|
|
||||||
|
use Garradin\Plugin\RecusFiscaux\Activite;
|
||||||
|
use Garradin\Plugin\RecusFiscaux\Personne;
|
||||||
|
use Garradin\Plugin\RecusFiscaux\Tarif;
|
||||||
use Garradin\Plugin\RecusFiscaux\Utils;
|
use Garradin\Plugin\RecusFiscaux\Utils;
|
||||||
|
|
||||||
// vérifier si l'année a bien été sélectionnée au préalable
|
// vérifier si l'année a bien été sélectionnée au préalable
|
||||||
$_SESSION['annee_recu'] = f('annee_recu');
|
$_SESSION['annee_recu'] = f('annee_recu');
|
||||||
// error_log("va.php::annee_recu = (" .$_SESSION['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');
|
||||||
}
|
}
|
||||||
// récupérer les infos du formulaire
|
// récupérer les infos du formulaire
|
||||||
$lesTarifs = f('tarifs') ?: [];
|
$tarifsSelectionnes = f('tarifs') ?: [];
|
||||||
|
|
||||||
// taux de réduction associés
|
// taux de réduction associés
|
||||||
$lesTaux = array();
|
$tauxSelectionnes = array();
|
||||||
foreach ($lesTarifs as $idTarif) {
|
foreach ($tarifsSelectionnes as $idTarif) {
|
||||||
$nomRadio = "taux_reduction_" . $idTarif;
|
$nomRadio = "taux_reduction_" . $idTarif;
|
||||||
$valRadio = f("$nomRadio");
|
$valRadio = f("$nomRadio");
|
||||||
$lesTaux[] = $valRadio ? $valRadio: $plugin->getConfig()->reduction[0]->taux;
|
$tauxSelectionnes[$idTarif] = $valRadio;
|
||||||
}
|
}
|
||||||
// error_log("Tarifs = " . print_r($lesTarifs, true) . "\n");
|
$_SESSION['tauxSelectionnes'] = $tauxSelectionnes;
|
||||||
// error_log("Réducs = " . print_r($lesTaux, true) . "\n");
|
|
||||||
|
|
||||||
// liste des versements correspondants
|
// obtenir les instances de tarifs correspondant à la sélection
|
||||||
$_SESSION['lesVersements'] = Utils::getVersementsActivite($_SESSION['annee_recu'], $lesTarifs);
|
$lesTarifs = array();
|
||||||
|
foreach (Utils::getTarifs($tarifsSelectionnes) as $ot) {
|
||||||
|
$lesTarifs[$ot->id] = Tarif::copier($ot);
|
||||||
|
}
|
||||||
|
$_SESSION['lesTarifs'] = $lesTarifs;
|
||||||
|
|
||||||
// liste des activités
|
// activités correspondants aux tarifs sélectionnés
|
||||||
$activites = Utils::getActivites();
|
$lesActivites = array();
|
||||||
foreach ($activites as $num => $activite)
|
foreach (Utils::getActivites($tarifsSelectionnes) as $activite) {
|
||||||
|
$lesActivites[$activite->id] = Activite::copier($activite);
|
||||||
|
}
|
||||||
|
$_SESSION['lesActivites'] = $lesActivites;
|
||||||
|
|
||||||
|
// versements correspondants aux tarifs sélectionnés
|
||||||
|
$_SESSION['lesVersements'] = Utils::getVersementsTarifs($_SESSION['annee_recu'], $tarifsSelectionnes);
|
||||||
|
|
||||||
|
// membres donateurs
|
||||||
|
$membresDonateurs = array();
|
||||||
|
$versementsMembres = Utils::getDonateurs($_SESSION['annee_recu']);
|
||||||
|
foreach ($versementsMembres as $versement) {
|
||||||
|
$membresDonateurs[$versement->idUser] = new Personne($versement->idUser,
|
||||||
|
$versement->nom,
|
||||||
|
$versement->adresse,
|
||||||
|
$versement->codePostal,
|
||||||
|
$versement->ville);
|
||||||
|
}
|
||||||
|
$_SESSION['membresDonateurs'] = $membresDonateurs;
|
||||||
|
|
||||||
|
// ------------------------------------------------------------------------
|
||||||
|
// fonctions pour l'affichage
|
||||||
|
|
||||||
|
// afficher les informations d'une activité et d'un tarif
|
||||||
|
$tpl->register_function('afficher_debut_tarif', function ($params)
|
||||||
{
|
{
|
||||||
// ajouter les tarifs de l'activité
|
$versement = $params['versement'];
|
||||||
$activite->{'tarifs'} = Utils::getTarifs($activite->{'idActivite'});
|
$idTarif = $versement->idTarif;
|
||||||
}
|
$tarif = $_SESSION['lesTarifs'][$idTarif];
|
||||||
|
$idActivite = $tarif->idActivite;
|
||||||
|
$activite = $_SESSION['lesActivites'][$idActivite];
|
||||||
|
|
||||||
|
$out = '<details open="open">
|
||||||
|
<summary class="activite">';
|
||||||
|
$out .= sprintf('
|
||||||
|
<h3>Activité « %s »</h3>', $activite->label);
|
||||||
|
if (!empty($activite->description)) {
|
||||||
|
$out .= sprintf('
|
||||||
|
<h4>%s</h4>', $activite->description);
|
||||||
|
}
|
||||||
|
$out .= sprintf('
|
||||||
|
<h4>tarif « %s »', $tarif->label);
|
||||||
|
if ($tarif->montant > 0) {
|
||||||
|
$out .= sprintf(' montant : %.2f €', $tarif->montant/100);
|
||||||
|
} else {
|
||||||
|
$out .= ' montant : libre';
|
||||||
|
}
|
||||||
|
$out .= '</h4>
|
||||||
|
</summary>';
|
||||||
|
return $out;
|
||||||
|
});
|
||||||
|
|
||||||
|
// 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>',
|
||||||
|
$personne->nomPrenom,
|
||||||
|
$idVersement);
|
||||||
|
$out .= sprintf('
|
||||||
|
<fieldset class="versements" id="versements_%s">',
|
||||||
|
$idVersement);
|
||||||
|
$out .= sprintf('
|
||||||
|
<input type="checkbox" class="check_%s" id="check_%s"',
|
||||||
|
$idVersement,
|
||||||
|
$idVersement);
|
||||||
|
$out .= sprintf(' onclick="cocherDecocherPersonne(check_%s, total_%s)" />',
|
||||||
|
$idVersement,
|
||||||
|
$idVersement);
|
||||||
|
$out .= sprintf('
|
||||||
|
<label for="check_%s">Cliquer pour cocher toutes les lignes</label>',
|
||||||
|
$idVersement);
|
||||||
|
$out .= '<br />
|
||||||
|
<hr>';
|
||||||
|
return $out;
|
||||||
|
});
|
||||||
|
|
||||||
|
// afficher un versement
|
||||||
|
$tpl->register_function('afficher_versement', function ($params)
|
||||||
|
{
|
||||||
|
$versement = $params['versement'];
|
||||||
|
$rang = $params['rang'];
|
||||||
|
$idVersement = $versement->idTarif . "_" . $versement->idUser;
|
||||||
|
$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>
|
||||||
|
<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;
|
||||||
|
});
|
||||||
|
// ------------------------------------------------------------------------
|
||||||
|
|
||||||
// préparation de l'affichage
|
// préparation de l'affichage
|
||||||
|
$tpl->assign('lesActivites', $lesActivites);
|
||||||
|
$tpl->assign('lesTarifs', $lesTarifs);
|
||||||
$tpl->assign('lesVersements', $_SESSION['lesVersements']);
|
$tpl->assign('lesVersements', $_SESSION['lesVersements']);
|
||||||
$tpl->assign('listeParActiviteEtTarif', $activites);
|
|
||||||
$tpl->assign('plugin_css', ['style.css']);
|
$tpl->assign('plugin_css', ['style.css']);
|
||||||
|
|
||||||
// envoyer au template
|
// envoyer au template
|
||||||
|
@ -2,19 +2,35 @@
|
|||||||
|
|
||||||
namespace Garradin;
|
namespace Garradin;
|
||||||
|
|
||||||
|
use Garradin\Plugin\RecusFiscaux\Personne;
|
||||||
use Garradin\Plugin\RecusFiscaux\Utils;
|
use Garradin\Plugin\RecusFiscaux\Utils;
|
||||||
|
|
||||||
|
$_SESSION['taux_reduction'] = $_POST['taux_reduction'];
|
||||||
|
|
||||||
// vérifier si l'année a bien été sélectionnée au préalable
|
// vérifier si l'année a bien été sélectionnée au préalable
|
||||||
$_SESSION['annee_recu'] = f('annee_recu');
|
$_SESSION['annee_recu'] = f('annee_recu');
|
||||||
// error_log("vp.php::annee_recu = (" .$_SESSION['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');
|
||||||
}
|
}
|
||||||
// liste des versements totaux par personne
|
|
||||||
|
// versements totaux par personne
|
||||||
$_SESSION['lesVersementsTotaux'] = Utils::getVersementsTotaux($_SESSION['annee_recu']);
|
$_SESSION['lesVersementsTotaux'] = Utils::getVersementsTotaux($_SESSION['annee_recu']);
|
||||||
|
|
||||||
|
// membres donateurs
|
||||||
|
$membresDonateurs = array();
|
||||||
|
$versementsMembres = Utils::getDonateurs($_SESSION['annee_recu']);
|
||||||
|
foreach ($versementsMembres as $versement) {
|
||||||
|
$membresDonateurs[$versement->idUser] = new Personne($versement->idUser,
|
||||||
|
$versement->nom,
|
||||||
|
$versement->adresse,
|
||||||
|
$versement->codePostal,
|
||||||
|
$versement->ville);
|
||||||
|
}
|
||||||
|
$_SESSION['membresDonateurs'] = $membresDonateurs;
|
||||||
|
|
||||||
// préparation de l'affichage
|
// préparation de l'affichage
|
||||||
$tpl->assign('lesVersementsTotaux', $_SESSION['lesVersementsTotaux']);
|
$tpl->assign('lesVersementsTotaux', $_SESSION['lesVersementsTotaux']);
|
||||||
|
$tpl->assign('lesDonateurs', $membresDonateurs);
|
||||||
$tpl->assign('plugin_css', ['style.css']);
|
$tpl->assign('plugin_css', ['style.css']);
|
||||||
|
|
||||||
// envoyer au template
|
// envoyer au template
|
||||||
|
Loading…
Reference in New Issue
Block a user