Overview
Comment: | gestion des paiements membres |
---|---|
Downloads: | Tarball | ZIP archive | SQL archive |
Timelines: | family | ancestors | descendants | both | trunk |
Files: | files | file ages | folders |
SHA1: |
84a9e07510a939743ec7fed99ed63df5 |
User & Date: | bohwaz on 2014-01-29 18:01:57 |
Other Links: | manifest | tags |
Context
2014-01-29
| ||
18:46 | Rétablir l'erreur un message d'erreur sans passer par PHP ici check-in: a88d3d35ef user: bohwaz tags: trunk | |
18:01 | gestion des paiements membres check-in: 84a9e07510 user: bohwaz tags: trunk | |
17:35 | Correction modification appel static cache pour les camemberts check-in: 20b164ea30 user: bohwaz tags: trunk | |
Changes
Added src/include/class.membres_transactions.php version [7934832b62].
> > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > | 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 123 124 125 126 | <?php namespace Garradin; class Membres_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['libelle']) || trim($data['libelle']) == '') { throw new UserException('Le libellé ne peut rester vide.'); } $data['libelle'] = trim($data['libelle']); 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['id_transaction'])) { if ($data['id_transaction'] != 0 && !$db->simpleQuerySingle('SELECT 1 FROM transactions WHERE id = ?;', false, (int) $data['id_transaction'])) { throw new UserException('Type de transaction inconnu.'); } $data['id_transaction'] = (int) $data['id_transaction']; } if (empty($data['id_membre']) || !$db->simpleQuerySingle('SELECT 1 FROM membres WHERE id = ?;', false, (int) $data['id_membre'])) { throw new UserException('Membre inconnu ou invalide.'); } $data['id_membre'] = (int) $data['id_membre']; } /** * Ajouter une transaction * @param array $data Tableau des champs à insérer * @return integer ID de la transaction créée */ public function add($data) { $db = DB::getInstance(); $this->_checkFields($data); $db->simpleInsert('membres_transactions', $data); $id = $db->lastInsertRowId(); // FIXME création écriture comptable return $id; } /** * Modifier une transaction * @param integer $id ID de la transaction à modifier * @param array $data Tableau des champs à modifier * @return bool true si succès */ public function edit($id, $data) { $db = DB::getInstance(); $this->_checkFields($data); return $db->simpleUpdate('membres_transactions', $data, 'id = \''.(int) $id.'\''); } /** * Supprimer un paiement * @param integer $id ID de la transaction à supprimer * @return integer true en cas de succès */ public function delete($id) { $db = DB::getInstance(); // Supprimer les liaisons mais pas les écritures comptables $db->simpleExec('DELETE FROM membres_transactions_operations WHERE id_membre_transaction = ?;', (int)$id); return $db->simpleExec('DELETE FROM transactions WHERE id = ?;', (int) $id); } /** * Renvoie une liste des écritures comptables liées à un paiement * @param int $id Numéro de la transaction * @return array Liste des écritures */ public function listComptaOperations($id) { $db = DB::getInstance(); return $db->simpleQueryFetch('SELECT * FROM compta_journal WHERE id IN (SELECT id_operation FROM membres_transactions_operations WHERE id_membre_transaction = ?);', \SQLITE3_ASSOC, (int)$id); } public function get($id) { $db = DB::getInstance(); return $db->simpleQuerySingle('SELECT * FROM membres_transactions WHERE id = ?;', true, (int) $id); } public function listForMember($id) { $db = DB::getInstance(); return $db->simpleStatementFetch('SELECT * FROM membres_transactions WHERE id_membre = ? ORDER BY date DESC;', \SQLITE3_ASSOC, (int)$id); } } |
Modified src/include/data/0.6.0.sql from [b6e3bdbeba] to [7cbd1842b4].
︙ | ︙ | |||
47 48 49 50 51 52 53 54 55 56 57 58 59 60 | 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, | > > | 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 | PRIMARY KEY(id_membre, id_rappel, date) ); CREATE TABLE membres_transactions -- Paiements enregistrés ( id INTEGER PRIMARY KEY, 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, |
︙ | ︙ |
Modified src/include/data/schema.sql from [f7cfcca9bf] to [faa457c82d].
︙ | ︙ | |||
76 77 78 79 80 81 82 83 84 85 86 87 88 89 | 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, | > > | 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 | PRIMARY KEY(id_membre, id_rappel, date) ); CREATE TABLE membres_transactions -- Paiements enregistrés ( id INTEGER PRIMARY KEY, 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, |
︙ | ︙ |