From 46a88944fc2736c36dc9822ae8cfc72be65bf64f Mon Sep 17 00:00:00 2001 From: engel <> Date: Wed, 26 Jan 2022 11:12:42 +0000 Subject: [PATCH] =?UTF-8?q?R=C3=A9organistion=20fichiers=20;=20ajout=20ges?= =?UTF-8?q?tion=20versements=20totaux=20par=20personne=20;=20montants=20g?= =?UTF-8?q?=C3=A9r=C3=A9s=20en=20centimes?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit FossilOrigin-Name: e1e11bdd898e24dc30d3a6f150e9679ed2d6bf915ac828cdfbb830b118651b8f --- lib/Services.php | 44 +++++++++++-- templates/_nav.tpl | 11 ++++ templates/activites.tpl | 31 +++++++++ templates/index.tpl | 139 +++++++++++---------------------------- templates/versements.tpl | 114 ++++++++++++++++++++++++++++++++ www/admin/action.php | 6 +- www/admin/activites.php | 14 ++++ www/admin/index.php | 19 +----- www/admin/script.js | 24 ++++++- www/admin/style.css | 9 ++- www/admin/versements.php | 24 +++++++ 11 files changed, 308 insertions(+), 127 deletions(-) create mode 100644 templates/_nav.tpl create mode 100644 templates/activites.tpl create mode 100644 templates/versements.tpl create mode 100644 www/admin/activites.php create mode 100644 www/admin/versements.php diff --git a/lib/Services.php b/lib/Services.php index b1b62a4..f71b1a5 100644 --- a/lib/Services.php +++ b/lib/Services.php @@ -33,7 +33,7 @@ class Services services_fees.id as idTarif, services_fees.label as titreTarif, services_fees.description as descTarif, - printf(\"%.2f\", services_fees.amount/100) as montantTarif + services_fees.amount as montantTarif FROM services_fees WHERE services_fees.id_service = ?", $activite @@ -92,9 +92,9 @@ class Services services_fees.id as idTarif, services.label as activite, services_fees.label as tarif, - printf(\"%8.2f\", services_fees.amount/100) as montant, + services_fees.amount as montant, acc_transactions_users.id_user as idUser, - printf(\"%8.2f\", acc_transactions_lines.credit/100) as versement, + acc_transactions_lines.credit as versement, membres.id as idMembre, membres.nom as nom, membres.adresse as adresse, @@ -132,9 +132,9 @@ class Services services_fees.id as idTarif, services.label as activite, services_fees.label as tarif, - printf(\"%8.2f\", services_fees.amount/100) as montant, + services_fees.amount as montant, acc_transactions_users.id_user as idUser, - printf(\"%8.2f\", acc_transactions_lines.credit/100) as versement, + acc_transactions_lines.credit as versement, membres.nom as nom, acc_transactions.date as Date, acc_transactions_users.id_transaction as idTrans @@ -157,6 +157,40 @@ class Services return DB::getInstance()->get($sql, $annee, $activite, $tarif); } + /** + * liste du total de versements par personne pour une année donnée + * @param année + */ + public static function getVersementsTotaux($annee) { + $sql = + "SELECT + acc_transactions_users.id_user as id, + membres.nom as nom, + sum(acc_transactions_lines.credit) AS montant, + 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 acc_transactions_users.id_user + ORDER by membres.nom COLLATE NOCASE; + "; + return DB::getInstance()->get($sql, $annee); + } + /** * @return nom de l'association */ diff --git a/templates/_nav.tpl b/templates/_nav.tpl new file mode 100644 index 0000000..e6bcc22 --- /dev/null +++ b/templates/_nav.tpl @@ -0,0 +1,11 @@ + +{include file="admin/_head.tpl" title="%s"|args:$plugin.nom current="plugin_%s"|args:$plugin.id} + + + diff --git a/templates/activites.tpl b/templates/activites.tpl new file mode 100644 index 0000000..fd5f96c --- /dev/null +++ b/templates/activites.tpl @@ -0,0 +1,31 @@ + +{include file="%s/templates/_nav.tpl"|args:$plugin_root current_nav="activites"} + +

Liste des activités, cotisations et comptes associés

+ + + + + + + + + + + + + {foreach from=$activitesTarifsComptes item="activite"} + + + + + + + + + {/foreach} + +
NomDescriptionTarifDescriptionN° CompteNom Compte
{$activite.label}{$activite.descService}{$activite.tarif}{$activite.descTarif}{$activite.numero_cpt}{$activite.nom_cpt}
+ + +{include file="admin/_foot.tpl"} \ No newline at end of file diff --git a/templates/index.tpl b/templates/index.tpl index cd14f17..b6ef82b 100644 --- a/templates/index.tpl +++ b/templates/index.tpl @@ -1,91 +1,48 @@ -{include file="admin/_head.tpl" title="%s"|args:$plugin.nom current="plugin_%s"|args:$plugin.id} + +{include file="%s/templates/_nav.tpl"|args:$plugin_root current_nav="index"} -

Liste des versements par activité et tarif

+

Liste des versements totaux par personne

-{* TODO : vérifier le détail de ce div *} -
- - -
+
- - -
- - -
- - {* Itération sur les activités *} - {foreach from=$listeParActiviteEtTarif item="activite"} - - {* Itération sur les tarifs de l'activité *} - {foreach from=$activite->tarifs item="tarif"} - -
- -

Activité « {$activite->label} »

- {if !empty($activite->description)} -

{$activite->description}

- {/if} -

tarif « {$tarif->titreTarif} », montant : {if $tarif->montantTarif > 0}{$tarif->montantTarif} - €{else}libre - {/if} -

-
- - {* - Itération sur les versements d'un tarif d'une activité - présentation : une table pour les versements d'une personne - *} - - {foreach from=$lesVersements key="rang" item="versement"} - {if $versement.idActivite == $activite->id && - $versement.idTarif == $tarif->idTarif} - {if $versement.idUser != $currentUser} - {* changement de personne *} - {if $firstUser} - - {else} - {* fermer le tableau précédent *} - - {/if} - {* Afficher les infos de la personne *} - idTarif."_".$versement->idUser; ?> -

Versements de {$versement.nom} : 0,00 €

-
- - -
-
- idUser; ?> - {/if} - {* afficher les infos du versement de la personne*} -
+ {* Itération sur les perssonnes *} + + + + + + + + + + + + + + {foreach from=$lesVersementsTotaux item="versement"} + + + + + + + + + + {/foreach} + +
- - {$versement.versement} - {$versement.date|date_format:"%d/%m/%Y"} - - {/if} - {/foreach} {* Itération sur les versements *} - - - {/foreach} {* Itération sur les tarifs de l'activité *} - {/foreach} {* Itération sur les activités *} + title="Tout cocher / décocher" + id="f_all" /> + + IdNom PrénomMontantAdresseVilleCode postal
+ {input + type="checkbox" + name="selected[]" + value=$versement.id} + {$versement.id}{$versement.nom}{$versement.montant|raw|money}{$versement.adresse}{$versement.ville}{$versement.codePostal}
@@ -93,21 +50,5 @@ {* scripts pour cases à cocher *} -{literal} - -{/literal} - {include file="admin/_foot.tpl"} \ No newline at end of file diff --git a/templates/versements.tpl b/templates/versements.tpl new file mode 100644 index 0000000..fc201d7 --- /dev/null +++ b/templates/versements.tpl @@ -0,0 +1,114 @@ + +{include file="%s/templates/_nav.tpl"|args:$plugin_root current_nav="versements"} + +

Liste des versements par activité et tarif

+ +{* TODO : vérifier le détail de ce div *} +
+ + +
+ +
+ +
+ + +
+ + {* Itération sur les activités *} + {foreach from=$listeParActiviteEtTarif item="activite"} + + {* Itération sur les tarifs de l'activité *} + {foreach from=$activite->tarifs item="tarif"} + +
+ +

Activité « {$activite->label} »

+ {if !empty($activite->description)} +

{$activite->description}

+ {/if} +

tarif « {$tarif->titreTarif} », montant : {if $tarif->montantTarif > 0}{$tarif->montantTarif} + €{else}libre + {/if} +

+
+ + {* + Itération sur les versements d'un tarif d'une activité + présentation : une table pour les versements d'une personne + *} + + {foreach from=$lesVersements key="rang" item="versement"} + {if $versement.idActivite == $activite->id && + $versement.idTarif == $tarif->idTarif} + {if $versement.idUser != $currentUser} + {* changement de personne *} + {if $firstUser} + + {else} + {* fermer le tableau précédent *} +
+ {/if} + {* Afficher les infos de la personne *} + idTarif."_".$versement->idUser; ?> +

Versements de {$versement.nom} : 0,00 €

+
+ + +
+
+ idUser; ?> + {/if} + {* afficher les infos du versement de la personne*} +
+ + + {$versement.versement|raw|money} + {$versement.date|date_format:"%d/%m/%Y"} +
+ {/if} + {/foreach} {* Itération sur les versements *} +
+
+ {/foreach} {* Itération sur les tarifs de l'activité *} + {/foreach} {* Itération sur les activités *} + + + + +{* scripts pour cases à cocher *} + + +{literal} + +{/literal} + + +{include file="admin/_foot.tpl"} \ No newline at end of file diff --git a/www/admin/action.php b/www/admin/action.php index 4c0784f..5b33481 100644 --- a/www/admin/action.php +++ b/www/admin/action.php @@ -50,7 +50,7 @@ foreach ($totalPersonnes as $idPersonne => $personne) { } $pdf->imprimer_recu( $annee_recu, - $personne->id, //$num_recu, + $personne->id, $personne->nomPrenom, $lesMontants, $personne->adresse, @@ -103,7 +103,7 @@ function cumulerVersements($versements) $totalPersonnes["$idPersonne_courant"]->ajouterVersement( $idActivite_courant, $idTarif_courant, - $totalVersements + $totalVersements/100 ); } $idActivite_courant = $ligne->idActivite; @@ -130,7 +130,7 @@ function cumulerVersements($versements) $totalPersonnes["$idPersonne_courant"]->ajouterVersement( $idActivite_courant, $idTarif_courant, - $totalVersements + $totalVersements/100 ); return $totalPersonnes; diff --git a/www/admin/activites.php b/www/admin/activites.php new file mode 100644 index 0000000..a3b3619 --- /dev/null +++ b/www/admin/activites.php @@ -0,0 +1,14 @@ +assign('activitesTarifsComptes', $activitesTarifsComptes); + +// envoyer au template +$tpl->display(PLUGIN_ROOT . '/templates/activites.tpl'); diff --git a/www/admin/index.php b/www/admin/index.php index eb07760..e5aa044 100644 --- a/www/admin/index.php +++ b/www/admin/index.php @@ -4,24 +4,11 @@ namespace Garradin; use Garradin\Plugin\RecusFiscaux\Services; -// liste des activités, cotisations et comptes associés -$activitesTarifsComptes = Services::getActivitesTarifsEtComptes(); - -// liste des versements pour activités -$_SESSION['lesVersements'] = Services::getTousLesVersements("2021"); - -// liste des activités -$activites = Services::getActivites(); -foreach ($activites as $num => $activite) -{ - // ajouter les tarifs de l'activité - $activite->{'tarifs'} = Services::getTarifs($activite->{'id'}); -} +// liste du total des versements par personne +$_SESSION['lesVersementsTotaux'] = Services::getVersementsTotaux("2021"); // préparation de l'affichage -$tpl->assign('activitesTarifsComptes', $activitesTarifsComptes); -$tpl->assign('lesVersements', $_SESSION['lesVersements']); -$tpl->assign('listeParActiviteEtTarif', $activites); +$tpl->assign('lesVersementsTotaux', $_SESSION['lesVersementsTotaux']); $tpl->assign('plugin_css', ['style.css']); // envoyer au template diff --git a/www/admin/script.js b/www/admin/script.js index 55ff3fc..b350bcb 100644 --- a/www/admin/script.js +++ b/www/admin/script.js @@ -85,7 +85,7 @@ function calculerTotal(listeCases, listeMontants, idTotal) { for (var i = 1; i < listeCases.length; ++i) { if (listeCases[i].checked) { - total += Number(listeMontants[i-1].textContent); + total += parseFloat(listeMontants[i-1].textContent); } } // "afficher" le total @@ -117,3 +117,25 @@ function verifierChoix(formulaire) } return ok; } + +/** + * Associer un écouteur à la première case à cocher de chaque table + * @remarks : n'est plus utile + */ +function activerListener() { + // parcourir les tables + const lesTables = document.querySelectorAll("table.list"); + for (let i = 0; i < lesTables.length; ++i) { + // vérifier si c'est l'une des tables qui nous intéresse + // l'id est du genre : versements_xx où xx est un entier + const id = lesTables[i].id; + const re = /^versements_[0-9]+/; + console.log("id = " + id + " => " + re.test(id)); + if (re.test(id)) { + // chercher le premier élément input + const premierInput = lesTables[i].querySelector("input"); + // associer un écouteur à la première case à cocher + premierInput.addEventListener('change', cocherDecocher); + } + } +} diff --git a/www/admin/style.css b/www/admin/style.css index 2fc5183..4276f5f 100644 --- a/www/admin/style.css +++ b/www/admin/style.css @@ -1,10 +1,10 @@ -/* liste de versements */ +/* liste des versements */ div.pair { - padding : 0.2em; + padding : 0.1em; background: rgba(var(--gSecondColor), 0.2); } div.impair { - padding : 0.2em; + padding : 0.1em; } fieldset { border:2px solid brown; @@ -18,6 +18,9 @@ div span { padding-left : 0.5em; padding-right : 0.5em; } +td.montant { + text-align : right; +} summary.activite { background: rgba(var(--gMainColor), 0.25); } diff --git a/www/admin/versements.php b/www/admin/versements.php new file mode 100644 index 0000000..2e8067c --- /dev/null +++ b/www/admin/versements.php @@ -0,0 +1,24 @@ + $activite) +{ + // ajouter les tarifs de l'activité + $activite->{'tarifs'} = Services::getTarifs($activite->{'id'}); +} + +// préparation de l'affichage +$tpl->assign('lesVersements', $_SESSION['lesVersements']); +$tpl->assign('listeParActiviteEtTarif', $activites); +$tpl->assign('plugin_css', ['style.css']); + +// envoyer au template +$tpl->display(PLUGIN_ROOT . '/templates/versements.tpl');