Overview
Comment: | État de la cotisation obligatoire et historique des paiements |
---|---|
Downloads: | Tarball | ZIP archive | SQL archive |
Timelines: | family | ancestors | descendants | both | trunk |
Files: | files | file ages | folders |
SHA1: |
373496163c695ff6a6bb4bba2c5f5df9 |
User & Date: | bohwaz on 2014-01-30 16:21:42 |
Other Links: | manifest | tags |
Context
2014-01-30
| ||
17:15 | Création de paiement check-in: 131f09907f user: bohwaz tags: trunk | |
16:21 | État de la cotisation obligatoire et historique des paiements check-in: 373496163c user: bohwaz tags: trunk | |
15:36 | Affichage transactions sur fiche membre + sous-menu sur les pages liées à un membre check-in: 5f46283cb0 user: bohwaz tags: trunk | |
Changes
Modified src/include/class.membres_transactions.php from [7d3fe7555d] to [ca6122d253].
︙ | ︙ | |||
16 17 18 19 20 21 22 | if (!isset($data['libelle']) || trim($data['libelle']) == '') { throw new UserException('Le libellé ne peut rester vide.'); } $data['libelle'] = trim($data['libelle']); | | | | 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 | if (!isset($data['libelle']) || trim($data['libelle']) == '') { throw new UserException('Le libellé ne peut rester vide.'); } $data['libelle'] = trim($data['libelle']); if (!isset($data['montant']) || !is_numeric($data['montant']) || (float)$data['montant'] < 0) { throw new UserException('Le montant doit être un nombre positif et valide.'); } $data['montant'] = (float) $data['montant']; if (isset($data['id_transaction'])) { if ($data['id_transaction'] != 0 && !$db->simpleQuerySingle('SELECT 1 FROM transactions WHERE id = ?;', false, (int) $data['id_transaction'])) |
︙ | ︙ | |||
133 134 135 136 137 138 139 140 141 | WHERE id_membre = ? ORDER BY date DESC;', \SQLITE3_ASSOC, (int)$id); } public function isMemberUpToDate($id, $transaction) { $db = DB::getInstance(); if (!empty($transaction['duree'])) { | > > > > > | | > | > | > > | > | > > | | 133 134 135 136 137 138 139 140 141 142 143 144 145 146 147 148 149 150 151 152 153 154 155 156 157 158 159 160 161 162 163 164 165 166 167 168 169 170 171 172 173 174 175 176 177 178 179 180 181 182 183 184 185 | WHERE id_membre = ? ORDER BY date DESC;', \SQLITE3_ASSOC, (int)$id); } public function isMemberUpToDate($id, $transaction) { $db = DB::getInstance(); $where = ''; $expires = 'NULL'; if (!empty($transaction['duree'])) { // On récupère les paiement dans les X jours précédant aujourd'hui $where = 'AND date >= date(\'now\', \'-' . (int)$transaction['duree'] . ' days\')'; $expires = 'date(date, \'+' . (int)$transaction['duree'] . ' days\')'; } elseif (!empty($transaction['debut'])) { $expires = '\'' . $transaction['fin'] . '\''; } $res = $db->simpleQuerySingle('SELECT ' . $expires . ' AS expiration, SUM(montant) AS total FROM membres_transactions WHERE id_transaction = ? AND id_membre = ? ' . $where . ' GROUP BY id_transaction ORDER BY date DESC LIMIT 1;', true, (int)$transaction['id'], (int)$id); // Pas de paiement trouvé : cotisation renouvelable expirée, ou pas de paiement fait // donc cotisation pas à jour if ($res === false) { return false; } // Pas assez payé ! if ($res['total'] < $transaction['montant']) { return -1; } // Paiement suffisant, on renvoie la date d'expiration // enfin sauf si cotisation ponctuelle, auquel cas on renvoie juste true return $res['expiration'] ?: true; } public function countForMember($id) { $db = DB::getInstance(); return $db->simpleQuerySingle('SELECT COUNT(*) FROM membres_transactions WHERE id_membre = ?;', false, (int)$id); } } |
Modified src/templates/admin/membres/fiche.tpl from [8e21378dab] to [6003d7eb06].
1 2 3 4 5 6 7 8 | {include file="admin/_head.tpl" title="`$membre.nom` (`$categorie.nom`)" current="membres"} <ul class="actions"> <li class="current"><a href="{$admin_url}membres/fiche.php?id={$membre.id|escape}">Membre n°{$membre.id|escape}</a></li> <li><a href="{$admin_url}membres/modifier.php?id={$membre.id|escape}">Modifier</a></li> {if $user.droits.membres >= Garradin\Membres::DROIT_ADMIN} <li><a href="{$admin_url}membres/supprimer.php?id={$membre.id|escape}">Supprimer</a></li> {/if} | | | | > | > | | 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 | {include file="admin/_head.tpl" title="`$membre.nom` (`$categorie.nom`)" current="membres"} <ul class="actions"> <li class="current"><a href="{$admin_url}membres/fiche.php?id={$membre.id|escape}">Membre n°{$membre.id|escape}</a></li> <li><a href="{$admin_url}membres/modifier.php?id={$membre.id|escape}">Modifier</a></li> {if $user.droits.membres >= Garradin\Membres::DROIT_ADMIN} <li><a href="{$admin_url}membres/supprimer.php?id={$membre.id|escape}">Supprimer</a></li> {/if} <li><a href="{$admin_url}membres/transactions.php?id={$membre.id|escape}">Suivi des paiements</a></li> <li><a href="{$admin_url}membres/transactions/ajout.php?id={$membre.id|escape}">Enregistrer un paiement</a></li> </ul> <dl class="cotisation"> {if $cotisation} <dt>Cotisation obligatoire</dt> <dd>{$cotisation.intitule|escape} — {if $cotisation.duree} {$cotisation.duree|escape} jours {elseif $cotisation.debut} du {$cotisation.debut|format_sqlite_date_to_french} au {$cotisation.fin|format_sqlite_date_to_french} {else} ponctuelle {/if} — {$cotisation.montant|escape_money} {$config.monnaie|escape} </dd> <dt>À jour de cotisation ?</dt> <dd> {if $statut_cotisation === false} <span class="error"><b>Non</b>, cotisation non payée ou expirée</span> {elseif $statut_cotisation === -1} <span class="alert"><b>Non</b>, cotisation payée partiellement</span> {else} <span class="confirm"><b>Oui</b>, cotisation à jour</span> {if $statut_cotisation !== true}(expire le {$statut_cotisation|format_sqlite_date_to_french}){/if} {/if} </dd> {/if} <dt>Paiements</dt> <dd> {if $nb_paiements == 1} {$nb_paiements|escape} paiement enregistré {elseif $nb_paiements} {$nb_paiements|escape} paiements enregistrés {else} Aucun paiement enregistré {/if} — <a href="{$admin_url}membres/transactions.php?id={$membre.id|escape}">Voir l'historique</a> </dd> <dd><form method="get" action="{$admin_url}membres/transactions/ajout.php"><input type="submit" value="Enregistrer un paiement →" /><input type="hidden" name="id" value="{$membre.id|escape}" /></form></dd> </dl> <dl class="describe"> <dt>Numéro d'adhérent</dt> <dd>{$membre.id|escape}</dd> {foreach from=$champs key="c" item="config"} <dt>{$config.title|escape}</dt> |
︙ | ︙ |
Modified src/templates/admin/membres/modifier.tpl from [218becfe54] to [ef4c16dc15].
1 2 3 4 5 6 7 8 | {include file="admin/_head.tpl" title="Modifier un membre" current="membres"} <ul class="actions"> <li><a href="{$admin_url}membres/fiche.php?id={$membre.id|escape}">Membre n°{$membre.id|escape}</a></li> <li class="current"><a href="{$admin_url}membres/modifier.php?id={$membre.id|escape}">Modifier</a></li> {if $user.droits.membres >= Garradin\Membres::DROIT_ADMIN} <li><a href="{$admin_url}membres/supprimer.php?id={$membre.id|escape}">Supprimer</a></li> {/if} | | | 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 | {include file="admin/_head.tpl" title="Modifier un membre" current="membres"} <ul class="actions"> <li><a href="{$admin_url}membres/fiche.php?id={$membre.id|escape}">Membre n°{$membre.id|escape}</a></li> <li class="current"><a href="{$admin_url}membres/modifier.php?id={$membre.id|escape}">Modifier</a></li> {if $user.droits.membres >= Garradin\Membres::DROIT_ADMIN} <li><a href="{$admin_url}membres/supprimer.php?id={$membre.id|escape}">Supprimer</a></li> {/if} <li><a href="{$admin_url}membres/transactions.php?id={$membre.id|escape}">Suivi des paiements</a></li> <li><a href="{$admin_url}membres/transactions/ajout.php?id={$membre.id|escape}">Enregistrer un paiement</a></li> </ul> {if $error} <p class="error"> {$error|escape} </p> |
︙ | ︙ |
Modified src/templates/admin/membres/supprimer.tpl from [f104bccba0] to [d5624b1e42].
1 2 3 4 5 6 7 8 | {include file="admin/_head.tpl" title="Supprimer un membre" current="membres"} <ul class="actions"> <li><a href="{$admin_url}membres/fiche.php?id={$membre.id|escape}">Membre n°{$membre.id|escape}</a></li> <li><a href="{$admin_url}membres/modifier.php?id={$membre.id|escape}">Modifier</a></li> {if $user.droits.membres >= Garradin\Membres::DROIT_ADMIN} <li class="current"><a href="{$admin_url}membres/supprimer.php?id={$membre.id|escape}">Supprimer</a></li> {/if} | | | 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 | {include file="admin/_head.tpl" title="Supprimer un membre" current="membres"} <ul class="actions"> <li><a href="{$admin_url}membres/fiche.php?id={$membre.id|escape}">Membre n°{$membre.id|escape}</a></li> <li><a href="{$admin_url}membres/modifier.php?id={$membre.id|escape}">Modifier</a></li> {if $user.droits.membres >= Garradin\Membres::DROIT_ADMIN} <li class="current"><a href="{$admin_url}membres/supprimer.php?id={$membre.id|escape}">Supprimer</a></li> {/if} <li><a href="{$admin_url}membres/transactions.php?id={$membre.id|escape}">Suivi des paiements</a></li> <li><a href="{$admin_url}membres/transactions/ajout.php?id={$membre.id|escape}">Enregistrer un paiement</a></li> </ul> {if $error} <p class="error"> {$error|escape} </p> |
︙ | ︙ |
Added src/templates/admin/membres/transactions.tpl version [b622edff24].
> > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > | 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 | {include file="admin/_head.tpl" title="Suivi des paiements membre n°`$membre.id`" current="membres/transactions"} <ul class="actions"> <li><a href="{$admin_url}membres/fiche.php?id={$membre.id|escape}">Membre n°{$membre.id|escape}</a></li> <li><a href="{$admin_url}membres/modifier.php?id={$membre.id|escape}">Modifier</a></li> {if $user.droits.membres >= Garradin\Membres::DROIT_ADMIN} <li><a href="{$admin_url}membres/supprimer.php?id={$membre.id|escape}">Supprimer</a></li> {/if} <li class="current"><a href="{$admin_url}membres/transactions.php?id={$membre.id|escape}">Suivi des paiements</a></li> <li><a href="{$admin_url}membres/transactions/ajout.php?id={$membre.id|escape}">Enregistrer un paiement</a></li> </ul> <dl class="cotisation"> {if $cotisation} <dt>Cotisation obligatoire</dt> <dd>{$cotisation.intitule|escape} — {if $cotisation.duree} {$cotisation.duree|escape} jours {elseif $cotisation.debut} du {$cotisation.debut|format_sqlite_date_to_french} au {$cotisation.fin|format_sqlite_date_to_french} {else} ponctuelle {/if} — {$cotisation.montant|escape_money} {$config.monnaie|escape} </dd> <dt>À jour de cotisation ?</dt> <dd> {if $statut_cotisation === false} <span class="error"><b>Non</b>, cotisation non payée ou expirée</span> {elseif $statut_cotisation === -1} <span class="alert"><b>Non</b>, cotisation payée partiellement</span> {else} <span class="confirm"><b>Oui</b>, cotisation à jour</span> {if $statut_cotisation !== true}(expire le {$statut_cotisation|format_sqlite_date_to_french}){/if} {/if} </dd> {/if} <dt>Paiements</dt> <dd> {if $nb_paiements == 1} {$nb_paiements|escape} paiement enregistré {elseif $nb_paiements} {$nb_paiements|escape} paiements enregistrés {else} Aucun paiement enregistré {/if} </dd> <dd><form method="get" action="{$admin_url}membres/transactions/ajout.php"><input type="submit" value="Enregistrer un paiement →" /><input type="hidden" name="id" value="{$membre.id|escape}" /></form></dd> </dl> <table class="list"> <thead> <th>Date</th> <td width="30%">Intitulé</td> <td>Montant</td> <td>Activité ou cotisation liée</td> <td class="actions"></td> </thead> <tbody> {foreach from=$paiements item="p"} <tr> <td>{$p.date|format_sqlite_date_to_french}</td> <td>{$p.libelle|escape}</td> <td class="num">{$p.montant|html_money} {$config.monnaie|escape}</td> <td> {if $p.id_transaction} FiXME {else} <em>Aucune</em> {/if} </td> <td class="actions"> <a href="{$admin_url}membres/transactions/modifier.php?id={$p.id|escape}">Modifier</a> | <a href="{$admin_url}membres/transactions/supprimer.php?id={$p.id|escape}">Supprimer</a> </td> </tr> {/foreach} </tbody> </table> {include file="admin/_foot.tpl"} |
Added src/www/admin/membres/transactions.php version [aeb7c1fd11].
> > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > | 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 | <?php namespace Garradin; require_once __DIR__ . '/../_inc.php'; if ($user['droits']['membres'] < Membres::DROIT_ECRITURE) { throw new UserException("Vous n'avez pas le droit d'accéder à cette page."); } if (empty($_GET['id']) || !is_numeric($_GET['id'])) { throw new UserException("Argument du numéro de membre manquant."); } $id = (int) $_GET['id']; $membre = $membres->get($id); if (!$membre) { throw new UserException("Ce membre n'existe pas."); } $cats = new Membres_Categories; $categorie = $cats->get($membre['id_categorie']); $tpl->assign('categorie', $categorie); $m_transactions = new Membres_Transactions; if (!empty($categorie['id_transaction_obligatoire'])) { $transactions = new Transactions; $tr = $transactions->get($categorie['id_transaction_obligatoire']); $tpl->assign('cotisation', $tr); $tpl->assign('statut_cotisation', $m_transactions->isMemberUpToDate($membre['id'], $tr)); } else { $tpl->assign('cotisation', false); } $tpl->assign('nb_paiements', $m_transactions->countForMember($membre['id'])); $tpl->assign('paiements', $m_transactions->listForMember($membre['id'])); $tpl->assign('membre', $membre); $tpl->display('admin/membres/transactions.tpl'); ?> |