Overview
Comment: | Base des transactions membres |
---|---|
Downloads: | Tarball | ZIP archive | SQL archive |
Timelines: | family | ancestors | descendants | both | trunk |
Files: | files | file ages | folders |
SHA1: |
28939b95831b1b23d5680114a93d14b7 |
User & Date: | bohwaz on 2013-04-12 13:28:28 |
Other Links: | manifest | tags |
Context
2013-04-12
| ||
13:52 | Une vérification pour la cohérence des données check-in: 575a6e268b user: bohwaz tags: trunk | |
13:28 | Base des transactions membres check-in: 28939b9583 user: bohwaz tags: trunk | |
13:09 | Vérification de date plus standard check-in: 5ee4915f5f user: bohwaz tags: trunk | |
Changes
Added include/class.transactions.php version [95b8ceae9e].
> > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > | 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 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 | <?php namespace Garradin; class Transactions { /** * Vérification des champs fournis pour la modification de donnée * @param array $data Tableau contenant les champs à ajouter/modifier * @return void */ protected function _checkFields(&$data) { $db = DB::getInstance(); if (!isset($data['intitule']) || trim($data['intitule']) == '') { throw new UserException('L\'intitulé ne peut rester vide.'); } $data['intitule'] = trim($data['intitule']); if (isset($data['description'])) { $data['description'] = trim($data['description']); } if (empty($data['montant']) || !is_numeric($data['montant'])) { throw new UserException('Le montant doit être un nombre valide.'); } $data['montant'] = (float) $data['montant']; if (isset($data['duree'])) { $data['duree'] = (int) $data['duree']; if ($data['duree'] < 0) { $data['duree'] = 0; } } if (isset($data['debut']) && trim($data['debut']) != '') { if (!empty($data['duree'])) { throw new UserException('Il n\'est pas possible de spécifier une durée ET une date fixe, merci de choisir l\'une des deux options.'); } if (!isset($data['fin']) || trim($data['fin']) == '') { throw new UserException('Une date de fin est obligatoire avec la date de début de validité.'); } if (!utils::checkDate($data['debut'])) { throw new UserException('La date de début est invalide.'); } if (!utils::checkDate($data['fin'])) { throw new UserException('La date de fin est invalide.'); } } if (isset($data['id_categorie_compta'])) { if ($data['id_categorie_compta'] != 0 && !$db->simpleQuerySingle('SELECT 1 FROM compta_categories WHERE id = ?;', false, (int) $data['id_categorie_compta'])) { throw new UserException('Catégorie comptable inconnue'); } $data['id_categorie_compta'] = (int) $data['id_categorie_compta']; } } /** * Ajouter une transaction * @param [type] $data [description] */ public function add($data) { $db = DB::getInstance(); $this->_checkFields($data); $db->simpleInsert('transactions', $data); $id = $db->lastInsertRowId(); return $id; } public function edit($id, $data) { $db = DB::getInstance(); $this->_checkFields($data); return $db->simpleUpdate('transactions', $data, 'id = \''.(int) $id.'\''); } public function delete($id) { $db = DB::getInstance(); return $db->simpleExec('DELETE FROM transactions WHERE id = ?;', (int) $id); } public function get($id) { $db = DB::getInstance(); return $db->simpleQuerySingle('SELECT * FROM transactions WHERE id = ?;', true, (int) $id); } public function listByName() { return $db->simpleStatementFetch('SELECT * FROM transactions ORDER BY intitule;') } } ?> |
Added include/data/0.6.0.sql version [238f57543b].
> > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > | 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 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 | CREATE TABLE transactions -- Paiements possibles ( id INTEGER PRIMARY KEY, id_categorie_compta INTEGER NULL, -- NULL si le type n'est pas associé automatiquement à la compta intitule TEXT NOT NULL, description TEXT NOT NULL, montant REAL NOT NULL, duree INTEGER NULL, -- En jours debut TEXT NULL, -- timestamp fin TEXT NULL, FOREIGN KEY (id_categorie_compta) REFERENCES compta_categories (id) ); CREATE TABLE rappels -- Rappels de devoir renouveller une transaction ( id INTEGER PRIMARY KEY, id_transaction INTEGER NULL, delai INTEGER NOT NULL, -- Délai en jours pour envoyer le rappel sujet TEXT NOT NULL, texte TEXT NOT NULL, FOREIGN KEY (id_transaction) REFERENCES transactions (id) ); CREATE TABLE rappels_envoyes -- Enregistrement des rappels envoyés à qui et quand ( id_membre INTEGER NOT NULL, id_rappel INTEGER NOT NULL, date TEXT NOT NULL DEFAUT CURRENT_TIMESTAMP, FOREIGN KEY (id_membre) REFERENCES membres (id), FOREIGN KEY (id_rappel) REFERENCES rappels (id), PRIMARY KEY(id_membre, id_rappel, date) ); CREATE TABLE membres_transactions -- Paiements enregistrés ( id_membre INTEGER NOT NULL, id_transaction INTEGER NULL, -- NULL si n'est pas relié à une transaction prévue libelle TEXT NULL, date TEXT NOT NULL DEFAULT CURRENT_TIMESTAMP, montant REAL NOT NULL, FOREIGN KEY (id_membre) REFERENCES membres (id), FOREIGN KEY (id_transaction) REFERENCES transactions (id) ); CREATE TABLE membres_transactions_operations -- Liaison paiements enregistrés avec écritures comptables ( id_operation INTEGER NOT NULL, id_membre_transaction INTEGER NOT NULL, FOREIGN KEY (id_operation) REFERENCES compta_journal (id), FOREIGN KEY (id_membre_transaction) REFERENCES membres_transactions (id) ); -- Mise à jour des catégories CREATE TABLE membres_categories_tmp -- Catégories de membres ( id INTEGER PRIMARY KEY, nom TEXT, description TEXT, droit_wiki INT DEFAULT 1, droit_membres INT DEFAULT 1, droit_compta INT DEFAULT 1, droit_inscription INT DEFAULT 0, droit_connexion INT DEFAULT 1, droit_config INT DEFAULT 0, cacher INT DEFAULT 0, id_transaction_obligatoire INTEGER NULL, FOREIGN KEY (id_transaction_obligatoire) REFERENCES transactions (id) ); -- Remise des anciennes infos INSERT INTO membres_categories_tmp SELECT id, nom, description, droit_wiki, droit_membres, droit_compta, droit_inscription, droit_connexion, droit_config, cacher FROM membres_categories; -- Conversion des cotisations de catégories en transactions INSERT INTO transactions (id_categorie_comptable, intitule, montant, duree) SELECT (SELECT id FROM compta_categories WHERE compte = 756 LIMIT 1), -- Numéro de catégorie comptable nom, montant_cotisation, duree_cotisation FROM membres_categories; -- Suppression de l'ancienne table et renommage de la nouvelle DROP TABLE membres_categories; ALTER TABLE membres_categories_tmp RENAME TO membres_categories; -- Ajout id transaction aux écritures comptables ALTER TABLE compta_operations ADD COLUMN id_transaction INTEGER NULL REFERENCES transactions (id); |
Modified include/data/schema.sql from [7f4e107406] to [ae76c00106].
|
| | < | < | | > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > | 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 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 | CREATE TABLE config ( -- Configuration de Garradin cle TEXT PRIMARY KEY, valeur TEXT ); -- On stocke ici les ID de catégorie de compta correspondant aux types spéciaux -- compta_categorie_cotisations => id_categorie -- compta_categorie_dons => id_categorie CREATE TABLE membres_categories -- Catégories de membres ( id INTEGER PRIMARY KEY, nom TEXT, description TEXT, droit_wiki INT DEFAULT 1, droit_membres INT DEFAULT 1, droit_compta INT DEFAULT 1, droit_inscription INT DEFAULT 0, droit_connexion INT DEFAULT 1, droit_config INT DEFAULT 0, cacher INT DEFAULT 0, id_transaction_obligatoire INTEGER NULL, FOREIGN KEY (id_transaction_obligatoire) REFERENCES transactions (id) ); -- Membres de l'asso -- Table dynamique générée par l'application -- voir class.champs_membres.php CREATE TABLE transactions -- Paiements possibles ( id INTEGER PRIMARY KEY, id_categorie_compta INTEGER NULL, -- NULL si le type n'est pas associé automatiquement à la compta intitule TEXT NOT NULL, description TEXT NOT NULL, montant REAL NOT NULL, duree INTEGER NULL, -- En jours debut TEXT NULL, -- timestamp fin TEXT NULL, FOREIGN KEY (id_categorie_compta) REFERENCES compta_categories (id) ); CREATE TABLE rappels -- Rappels de devoir renouveller une transaction ( id INTEGER PRIMARY KEY, id_transaction INTEGER NULL, delai INTEGER NOT NULL, -- Délai en jours pour envoyer le rappel sujet TEXT NOT NULL, texte TEXT NOT NULL, FOREIGN KEY (id_transaction) REFERENCES transactions (id) ); CREATE TABLE rappels_envoyes -- Enregistrement des rappels envoyés à qui et quand ( id_membre INTEGER NOT NULL, id_rappel INTEGER NOT NULL, date TEXT NOT NULL DEFAUT CURRENT_TIMESTAMP, FOREIGN KEY (id_membre) REFERENCES membres (id), FOREIGN KEY (id_rappel) REFERENCES rappels (id), PRIMARY KEY(id_membre, id_rappel, date) ); CREATE TABLE membres_transactions -- Paiements enregistrés ( id_membre INTEGER NOT NULL, id_transaction INTEGER NULL, -- NULL si n'est pas relié à une transaction prévue libelle TEXT NULL, date TEXT NOT NULL DEFAULT CURRENT_TIMESTAMP, montant REAL NOT NULL, FOREIGN KEY (id_membre) REFERENCES membres (id), FOREIGN KEY (id_transaction) REFERENCES transactions (id) ); CREATE TABLE membres_transactions_operations -- Liaison paiements enregistrés avec écritures comptables ( id_operation INTEGER NOT NULL, id_membre_transaction INTEGER NOT NULL, FOREIGN KEY (id_operation) REFERENCES compta_journal (id), FOREIGN KEY (id_membre_transaction) REFERENCES membres_transactions (id) ); -- -- WIKI -- CREATE TABLE wiki_pages -- Pages du wiki |
︙ | ︙ | |||
191 192 193 194 195 196 197 198 199 200 201 202 203 | compte_debit INTEGER, -- N° du compte dans le plan compte_credit INTEGER, -- N° du compte dans le plan id_exercice INTEGER NULL DEFAULT NULL, -- En cas de compta simple, l'exercice est permanent (NULL) id_auteur INTEGER NULL, id_categorie INTEGER NULL, -- Numéro de catégorie (en mode simple) FOREIGN KEY(moyen_paiement) REFERENCES compta_moyens_paiement(code), FOREIGN KEY(compte_debit) REFERENCES compta_comptes(id), FOREIGN KEY(compte_credit) REFERENCES compta_comptes(id), FOREIGN KEY(id_exercice) REFERENCES compta_exercices(id), FOREIGN KEY(id_auteur) REFERENCES membres(id), | > | > | 261 262 263 264 265 266 267 268 269 270 271 272 273 274 275 276 277 278 279 280 281 282 283 | compte_debit INTEGER, -- N° du compte dans le plan compte_credit INTEGER, -- N° du compte dans le plan id_exercice INTEGER NULL DEFAULT NULL, -- En cas de compta simple, l'exercice est permanent (NULL) id_auteur INTEGER NULL, id_categorie INTEGER NULL, -- Numéro de catégorie (en mode simple) id_transaction INTEGER NULL, -- Numéro de transaction FOREIGN KEY(moyen_paiement) REFERENCES compta_moyens_paiement(code), FOREIGN KEY(compte_debit) REFERENCES compta_comptes(id), FOREIGN KEY(compte_credit) REFERENCES compta_comptes(id), FOREIGN KEY(id_exercice) REFERENCES compta_exercices(id), FOREIGN KEY(id_auteur) REFERENCES membres(id), FOREIGN KEY(id_categorie) REFERENCES compta_categories(id), FOREIGN KEY(id_transaction) REFERENCES membres_transactions(id) ); CREATE INDEX compta_operations_exercice ON compta_journal (id_exercice); CREATE INDEX compta_operations_date ON compta_journal (date); CREATE INDEX compta_operations_comptes ON compta_journal (compte_debit, compte_credit); CREATE INDEX compta_operations_auteur ON compta_journal (id_auteur); |
︙ | ︙ |
Modified templates/admin/_head.tpl from [0bb167f891] to [5b934e5585].
1 2 3 4 5 6 | <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd"> <html xmlns="http://www.w3.org/1999/xhtml" xml:lang="fr" lang="fr"> <head> <meta http-equiv="Content-Type" content="text/html; charset=UTF-8" /> <title>{$title|escape}</title> <meta name="viewport" content="width=device-width, initial-scale=1.0" /> | | | | | | | > | | | | | | | | | | | | | | | | 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 | <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd"> <html xmlns="http://www.w3.org/1999/xhtml" xml:lang="fr" lang="fr"> <head> <meta http-equiv="Content-Type" content="text/html; charset=UTF-8" /> <title>{$title|escape}</title> <meta name="viewport" content="width=device-width, initial-scale=1.0" /> <link rel="stylesheet" type="text/css" href="{$admin_url}static/admin.css" media="screen,projection,handheld,print" /> {if isset($custom_js)} {foreach from=$custom_js item="js"} <script type="text/javascript" src="{$admin_url}static/{$js|escape}"></script> {/foreach} {/if} </head> <body{if !empty($body_id)} id="{$body_id|escape}"{/if}> {if empty($is_popup)} <div class="header"> <h1>{$title|escape}</h1> {if $is_logged} <ul class="menu"> <li class="home{if $current == 'home'} current{/if}"><a href="{$admin_url}">Accueil</a></li> {if $user.droits.membres >= Garradin\Membres::DROIT_ACCES} <li class="list_members{if $current == 'membres'} current{/if}"><a href="{$admin_url}membres/">Membres <small>({$nb_membres|escape})</small></a> {if $user.droits.membres >= Garradin\Membres::DROIT_ECRITURE} <ul> <li class="add member{if $current == 'membres/ajouter'} current{/if}"><a href="{$admin_url}membres/ajouter.php">Ajouter</a></li> {if $user.droits.membres >= Garradin\Membres::DROIT_ADMIN} <li class="member config{if $current == 'membres/categories'} current{/if}"><a href="{$admin_url}membres/categories.php">Catégories</a></li> <li class="member_transactions{if $current == 'membres/transactions'} current{/if}"><a href="{$admin_url}membres/transactions.php">Transactions</a></li> <li class="members_mail{if $current == 'membres/message_collectif'} current{/if}"><a href="{$admin_url}membres/message_collectif.php">Message collectif</a></li> {/if} </ul> {/if} </li> {/if} {if $user.droits.compta >= Garradin\Membres::DROIT_ACCES} <li class="compta{if $current == 'compta'} current{/if}"><a href="{$admin_url}compta/">Comptabilité <small>[beta]</small></a> <ul> {if $user.droits.compta >= Garradin\Membres::DROIT_ECRITURE} <li class="compta_saisie{if $current == 'compta/saisie'} current{/if}"><a href="{$admin_url}compta/operations/saisir.php">Saisie</a></li> {/if} <li class="compta_gestion{if $current == 'compta/gestion'} current{/if}"><a href="{$admin_url}compta/operations/">Suivi des opérations</a></li> <li class="compta_banques{if $current == 'compta/banques'} current{/if}"><a href="{$admin_url}compta/banques/">Banques & caisse</a></li> {if $user.droits.compta >= Garradin\Membres::DROIT_ADMIN} <li class="compta_cats{if $current == 'compta/categories'} current{/if}"><a href="{$admin_url}compta/categories/">Catégories & comptes</a></li> {/if} <li class="compta_exercices{if $current == 'compta/exercices'} current{/if}"><a href="{$admin_url}compta/exercices/">Exercices</a></li> </ul> </li> {/if} {if $user.droits.wiki >= Garradin\Membres::DROIT_ACCES} <li class="wiki{if $current == 'wiki'} current{/if}"><a href="{$admin_url}wiki/">Wiki</a> <ul> <li class="wiki_recent{if $current == 'wiki/recent'} current{/if}"><a href="{$admin_url}wiki/recent.php">Dernières modifications</a> <li class="wiki_chercher{if $current == 'wiki/chercher'} current{/if}"><a href="{$admin_url}wiki/chercher.php">Recherche</a> {if $user.droits.wiki >= Garradin\Membres::DROIT_ECRITURE} {/if} {*<li class="wiki_suivi{if $current == 'wiki/suivi'} current{/if}"><a href="{$admin_url}wiki/suivi.php">Mes pages suivies</a>*} {*<li class="wiki_contribution{if $current == 'wiki/contribution'} current{/if}"><a href="{$admin_url}wiki/contributions.php">Mes contributions</a>*} </ul> </li> {/if} {if $user.droits.config >= Garradin\Membres::DROIT_ADMIN} <li class="config{if $current == 'config'} current{/if}"><a href="{$admin_url}config/">Configuration</a> {/if} <li class="mes_infos{if $current == 'mes_infos'} current{/if}"><a href="{$admin_url}mes_infos.php">Mes infos</a> <li class="logout"><a href="{$admin_url}logout.php">Déconnexion</a></li> </ul> {/if} </div> {/if} <div class="page"> |