diff --git a/config.json b/config.json index 2c63c08..bbc1ecc 100644 --- a/config.json +++ b/config.json @@ -1,2 +1,8 @@ { + "auteur" : "jce", + "articlesCGI" : [ + "Article 200", + "Article 228 bis", + "Article 978" + ] } diff --git a/garradin_plugin.ini b/garradin_plugin.ini index eb0a5f2..1660303 100644 --- a/garradin_plugin.ini +++ b/garradin_plugin.ini @@ -1,8 +1,8 @@ nom="Reçus fiscaux" description="Génération de reçus fiscaux pour les dons des membres" auteur="jce" -url="" +url="https://git.roflcopter.fr/lesanges/recus-fiscaux-garradin" version="0.1" menu=1 -config=0 +config=1 min_version="1.1" diff --git a/lib/Utils.php b/lib/Utils.php index a964576..22cf619 100644 --- a/lib/Utils.php +++ b/lib/Utils.php @@ -14,7 +14,7 @@ class Utils { return DB::getInstance()->get( "SELECT - id, + id as idActivite, label, description FROM services @@ -47,9 +47,9 @@ class Utils { return DB::getInstance()->get( "SELECT - services.id as idService, - services.label as titreService, - services.description as descService, + services.id as idActivite, + services.label as titreActivite, + services.description as descActivite, services_fees.id as idTarif, services_fees.label as titreTarif, services_fees.description as descTarif @@ -66,13 +66,14 @@ class Utils { return DB::getInstance()->get( "SELECT - services.id as Id, - services.label, - services.description as descService, - services_fees.label as tarif, + services.id as idActivite, + services.label as titreActivite, + services.description as descActivite, + services_fees.id as idTarif, + services_fees.label as titreTarif, services_fees.description as descTarif, - acc_accounts.code as numero_cpt, - acc_accounts.label as nom_cpt + acc_accounts.code as numeroCpt, + acc_accounts.label as nomCpt FROM services LEFT JOIN services_fees ON services_fees.id_service = services.id LEFT JOIN acc_accounts ON services_fees.id_account = acc_accounts.id @@ -164,7 +165,7 @@ class Utils public static function getVersementsTotaux($annee) { $sql = "SELECT - acc_transactions_users.id_user as id, + acc_transactions_users.id_user as idUser, membres.nom as nom, sum(acc_transactions_lines.credit) AS montant, membres.adresse as adresse, @@ -195,43 +196,54 @@ class Utils * @return nom de l'association */ public static function getNomAsso() { - return DB::getInstance()->get( + return DB::getInstance()->first( "SELECT value FROM config WHERE key = 'nom_asso'" - )[0]->value; + )->value; } /** * @return adresse de l'association */ public static function getAdresseAsso() { - return DB::getInstance()->get( + return DB::getInstance()->first( "SELECT value FROM config WHERE key = 'adresse_asso'" - )[0]->value; + )->value; } /** - * récupérer l'année du premier exercice + * @return liste des années fiscales */ - public static function getPremiereAnnee() { - return DB::getInstance()->get( + public static function getAnneesFiscales() { + $rows = DB::getInstance()->get( "SELECT strftime('%Y', start_date) as annee FROM acc_years - ORDER by start_date" - )[0]->value; + ORDER by start_date DESC" + ); + $anneesFiscales = array(); + foreach ($rows as $row) { + $anneesFiscales[] = $row->annee; + } + return $anneesFiscales; } // ------------------------------------------------------------------------ // zip archive creation // ------------------------------------------------------------------------ + /** + * enregistrer les fichiers dans une archive zip + * @param $fileList : liste des fichiers à archiver + * @param $year : pour générer le nom de l'archive + * @param $archiveDir : ne sert plus + */ static function makeArchive( $fileList, $year, - $archiveDir) + $archiveDir = null) { $zipFilename = "recus_dons" . $year . ".zip"; header('Content-type: application/zip'); diff --git a/templates/_nav.tpl b/templates/_nav.tpl index ed9bae6..5908a88 100644 --- a/templates/_nav.tpl +++ b/templates/_nav.tpl @@ -7,5 +7,8 @@ Activités et tarifs Versements totaux par personne Tous les versements + {if $session->canAccess($session::SECTION_ACCOUNTING, $session::ACCESS_WRITE)} + Configuration + {/if} diff --git a/templates/index.tpl b/templates/index.tpl index 884569c..6ed5d61 100644 --- a/templates/index.tpl +++ b/templates/index.tpl @@ -1,31 +1,117 @@ {include file="%s/templates/_nav.tpl"|args:$plugin_root current_nav="index"} -

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}
+

Choisir l'année fiscale

+
+
+ {* Choisir l'année fiscale *} + +
+ +
+

Choisir une méthode de génération des reçus

+ +
+ {* Choisir une des méthodes *} +
+
+ + +
+ +
+ + +
+
+
+
+ + + + +
+ +{literal} + +{/literal} {include file="admin/_foot.tpl"} \ No newline at end of file diff --git a/templates/personne.tpl b/templates/personne.tpl index 8bf6c49..2b3e4e7 100644 --- a/templates/personne.tpl +++ b/templates/personne.tpl @@ -10,10 +10,7 @@ - + Id @@ -28,12 +25,12 @@ {foreach from=$lesVersementsTotaux item="versement"} - {input - type="checkbox" - name="selected[]" - value=$versement.id} - - {$versement.id} + {input + type="checkbox" + name="selected[]" + value=$versement.idUser} + + {$versement.idUser} {$versement.nom} {$versement.montant|raw|money} {$versement.adresse} diff --git a/templates/versements.tpl b/templates/versements.tpl index fc201d7..0cce830 100644 --- a/templates/versements.tpl +++ b/templates/versements.tpl @@ -12,11 +12,7 @@
- +
@@ -32,20 +28,21 @@ {if !empty($activite->description)}

{$activite->description}

{/if} -

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

tarif « {$tarif->titreTarif} », montant : + {if $tarif->montantTarif > 0}{$tarif->montantTarif|raw|money} €{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} + + {foreach from=$lesVersements key="rang" item="versement"} + {if $versement.idActivite == $activite->idActivite && + $versement.idTarif == $tarif->idTarif} {if $versement.idUser != $currentUser} {* changement de personne *} {if $firstUser} @@ -58,34 +55,27 @@ idTarif."_".$versement->idUser; ?>

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

- +

- idUser; ?> + idUser; ?> + {/if} + {* afficher les infos du versement de la personne*} +
+ + + {$versement.versement|raw|money} + {$versement.date|date_format:"%d/%m/%Y"} +
{/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 versements *}
- {/foreach} {* Itération sur les tarifs de l'activité *} + {/foreach} {* Itération sur les tarifs de l'activité *} {/foreach} {* Itération sur les activités *} @@ -95,19 +85,19 @@ {literal} - + {/literal} diff --git a/www/admin/index.php b/www/admin/index.php index 5454485..7e70848 100644 --- a/www/admin/index.php +++ b/www/admin/index.php @@ -4,11 +4,21 @@ namespace Garradin; use Garradin\Plugin\RecusFiscaux\Utils; +// première année d'exercice +$anneeCourante = date("Y"); +$anneesFiscales = Utils::getAnneesFiscales(); +if ($anneesFiscales[0] < $anneeCourante) { + array_unshift($anneesFiscales, $anneeCourante); +} + // liste des activités, cotisations et comptes associés $activitesTarifsComptes = Utils::getActivitesTarifsEtComptes(); // préparation de l'affichage +$tpl->assign('anneesFiscales', $anneesFiscales); +$tpl->assign('anneeCourante', $anneeCourante); $tpl->assign('activitesTarifsComptes', $activitesTarifsComptes); +$tpl->assign('plugin_css', ['style.css']); // envoyer au template $tpl->display(PLUGIN_ROOT . '/templates/index.tpl'); diff --git a/www/admin/script.js b/www/admin/script.js index b350bcb..e8b0262 100644 --- a/www/admin/script.js +++ b/www/admin/script.js @@ -35,7 +35,7 @@ function cocherDecocherTout(idCaseGlobale) { * 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 id de la case qui a été cochée * @param id de l'élément où afficher le total */ @@ -63,7 +63,7 @@ function cocherDecocherPersonne(idCase, idTotal) { * Fonction appelée quand on (dé)coche la case d'un versement * - (dé)sélectionner cette case (?) * - faire le total des cases cochées et l'afficher - * + * * @param id de la case qui a été cochée * @param id de l'élément où afficher le total */ @@ -118,6 +118,15 @@ function verifierChoix(formulaire) return ok; } +function afficherMasquer(formulaire, nomClasse1, nomClasse2) { + for (var elem of formulaire.querySelectorAll(nomClasse1)) { + elem.classList.remove('hidden'); + } + for (var elem of formulaire.querySelectorAll(nomClasse2)) { + elem.classList.add('hidden'); + } +} + /** * Associer un écouteur à la première case à cocher de chaque table * @remarks : n'est plus utile diff --git a/www/admin/style.css b/www/admin/style.css index 4276f5f..39b958a 100644 --- a/www/admin/style.css +++ b/www/admin/style.css @@ -27,3 +27,6 @@ summary.activite { h3.personne { background: rgba(var(--gSecondColor), 0.35); } +input[type="text"] { + width: 50em; +} diff --git a/www/admin/versements.php b/www/admin/versements.php index eab7427..13f23fb 100644 --- a/www/admin/versements.php +++ b/www/admin/versements.php @@ -12,7 +12,7 @@ $activites = Utils::getActivites(); foreach ($activites as $num => $activite) { // ajouter les tarifs de l'activité - $activite->{'tarifs'} = Utils::getTarifs($activite->{'id'}); + $activite->{'tarifs'} = Utils::getTarifs($activite->{'idActivite'}); } // préparation de l'affichage