Overview
Comment: | Modernisation code: ne plus appeler querySingle et query |
---|---|
Downloads: | Tarball | ZIP archive | SQL archive |
Timelines: | family | ancestors | descendants | both | dev |
Files: | files | file ages | folders |
SHA1: |
2258074fe9ef1c079e1da8538ed3ccff |
User & Date: | bohwaz on 2017-08-02 04:35:51 |
Other Links: | branch diff | manifest | tags |
Context
2017-08-02
| ||
04:59 | Correction sur les icônes alignées à gauche check-in: 7602ccbe89 user: bohwaz tags: dev | |
04:35 | Modernisation code: ne plus appeler querySingle et query check-in: 2258074fe9 user: bohwaz tags: dev | |
04:30 | Correction image de fond avec couleurs personnalisées check-in: 685bb7583a user: bohwaz tags: dev | |
Changes
Modified src/include/lib/Garradin/Compta/Exercices.php from [44d3608108] to [353bdea756].
︙ | ︙ | |||
154 155 156 157 158 159 160 | } unset($comptes); $this->solderResultat($old_id, $date); // Récupérer chacun des comptes de bilan et leurs soldes (uniquement les classes 1 à 5) | | | 154 155 156 157 158 159 160 161 162 163 164 165 166 167 168 | } unset($comptes); $this->solderResultat($old_id, $date); // Récupérer chacun des comptes de bilan et leurs soldes (uniquement les classes 1 à 5) $statement = $db->preparedQuery('SELECT compta_comptes.id AS compte, compta_comptes.position AS position, ROUND(COALESCE((SELECT SUM(montant) FROM compta_journal WHERE compte_debit = compta_comptes.id AND id_exercice = :id), 0), 2) - ROUND(COALESCE((SELECT SUM(montant) FROM compta_journal WHERE compte_credit = compta_comptes.id AND id_exercice = :id), 0), 2) AS solde FROM compta_comptes INNER JOIN compta_journal ON compta_comptes.id = compta_journal.compte_debit OR compta_comptes.id = compta_journal.compte_credit WHERE id_exercice = :id AND solde != 0 AND CAST(substr(compta_comptes.id, 1, 1) AS INTEGER) <= 5 GROUP BY compta_comptes.id;', ['id' => $old_id]); |
︙ | ︙ | |||
324 325 326 327 328 329 330 | } public function getGrandLivre($exercice) { $db = DB::getInstance(); $livre = ['classes' => [], 'debit' => 0.0, 'credit' => 0.0]; | | | 324 325 326 327 328 329 330 331 332 333 334 335 336 337 338 | } public function getGrandLivre($exercice) { $db = DB::getInstance(); $livre = ['classes' => [], 'debit' => 0.0, 'credit' => 0.0]; $res = $db->preparedQuery('SELECT compte FROM (SELECT compte_debit AS compte FROM compta_journal WHERE id_exercice = :exercice GROUP BY compte_debit UNION SELECT compte_credit AS compte FROM compta_journal WHERE id_exercice = :exercice GROUP BY compte_credit) ORDER BY compte ASC;', ['exercice' => (int) $exercice]); |
︙ | ︙ | |||
414 415 416 417 418 419 420 | { $db = DB::getInstance(); $charges = ['comptes' => [], 'total' => 0.0]; $produits = ['comptes' => [], 'total' => 0.0]; $resultat = 0.0; | | | 414 415 416 417 418 419 420 421 422 423 424 425 426 427 428 | { $db = DB::getInstance(); $charges = ['comptes' => [], 'total' => 0.0]; $produits = ['comptes' => [], 'total' => 0.0]; $resultat = 0.0; $res = $db->preparedQuery('SELECT compte, SUM(debit), SUM(credit) FROM (SELECT compte_debit AS compte, SUM(montant) AS debit, 0 AS credit FROM compta_journal WHERE id_exercice = :exercice GROUP BY compte_debit UNION SELECT compte_credit AS compte, 0 AS debit, SUM(montant) AS credit FROM compta_journal WHERE id_exercice = :exercice GROUP BY compte_credit) WHERE compte LIKE \'6%\' OR compte LIKE \'7%\' |
︙ | ︙ | |||
512 513 514 515 516 517 518 | ]; $passif['total'] = $resultat['resultat']; } // Y'a sûrement moyen d'améliorer tout ça pour que le maximum de travail // soit fait au niveau du SQL, mais pour le moment ça marche | | | 512 513 514 515 516 517 518 519 520 521 522 523 524 525 526 | ]; $passif['total'] = $resultat['resultat']; } // Y'a sûrement moyen d'améliorer tout ça pour que le maximum de travail // soit fait au niveau du SQL, mais pour le moment ça marche $res = $db->preparedQuery('SELECT compte, debit, credit, (SELECT position FROM compta_comptes WHERE id = compte) AS position FROM (SELECT compte_debit AS compte, SUM(montant) AS debit, NULL AS credit FROM compta_journal WHERE id_exercice = :exercice GROUP BY compte_debit UNION SELECT compte_credit AS compte, NULL AS debit, SUM(montant) AS credit FROM compta_journal WHERE id_exercice = :exercice GROUP BY compte_credit) WHERE compte IN (SELECT id FROM compta_comptes WHERE position IN ('.implode(', ', $include).')) |
︙ | ︙ |
Modified src/include/lib/Garradin/Compta/Journal.php from [528bb1a84c] to [87df6117c6].
︙ | ︙ | |||
8 9 10 11 12 13 14 | use \Garradin\Config; class Journal { protected function _getCurrentExercice() { $db = DB::getInstance(); | | | 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 | use \Garradin\Config; class Journal { protected function _getCurrentExercice() { $db = DB::getInstance(); $id = $db->firstColumn('SELECT id FROM compta_exercices WHERE cloture = 0 LIMIT 1;'); if (!$id) { throw new UserException('Aucun exercice en cours.'); } return $id; |
︙ | ︙ | |||
61 62 63 64 65 66 67 | $query = $debit . ' - ' . $credit; } else { $query = $credit . ' - ' . $debit; } | | | 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 | $query = $debit . ' - ' . $credit; } else { $query = $credit . ' - ' . $debit; } return $db->firstColumn('SELECT ' . $query . ';'); } public function getJournalCompte($compte, $inclure_sous_comptes = false) { $db = DB::getInstance(); $position = $db->firstColumn('SELECT position FROM compta_comptes WHERE id = ?;', $compte); |
︙ | ︙ | |||
389 390 391 392 393 394 395 | } public function schemaSQL() { $db = DB::getInstance(); $tables = [ | | | 389 390 391 392 393 394 395 396 397 398 399 400 401 | } public function schemaSQL() { $db = DB::getInstance(); $tables = [ 'journal' => $db->firstColumn('SELECT sql FROM sqlite_master WHERE type = \'table\' AND name = \'compta_journal\';'), ]; return $tables; } } |
Modified src/include/lib/Garradin/Compta/Rapprochement.php from [25acc9848e] to [dde3f8b132].
︙ | ︙ | |||
10 11 12 13 14 15 16 | class Rapprochement { public function getJournal($compte, $debut, $fin, &$solde_initial, &$solde_final) { $db = DB::getInstance(); | | | 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 | class Rapprochement { public function getJournal($compte, $debut, $fin, &$solde_initial, &$solde_final) { $db = DB::getInstance(); $exercice = $db->firstColumn('SELECT id FROM compta_exercices WHERE cloture = 0 LIMIT 1;'); $query = 'SELECT COALESCE((SELECT SUM(montant) FROM compta_journal WHERE compte_debit = :compte AND id_exercice = :exercice AND date < :date), 0) - COALESCE((SELECT SUM(montant) FROM compta_journal WHERE compte_credit = :compte AND id_exercice = :exercice AND date < :date), 0)'; $solde_initial = $solde = $db->firstColumn($query, [ 'compte' => $compte, |
︙ | ︙ |
Modified src/include/lib/Garradin/Config.php from [e8c8379b02] to [b8b70c10db].
︙ | ︙ | |||
109 110 111 112 113 114 115 | public function save() { if (empty($this->modified)) return true; $values = []; | < < > > | | 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130 131 132 133 134 135 136 137 138 139 140 141 142 143 144 145 146 147 148 149 150 151 152 153 154 155 156 | public function save() { if (empty($this->modified)) return true; $values = []; $db = DB::getInstance(); if (isset($this->modified['image_fond'])) { if ($current = $db->firstColumn('SELECT valeur FROM config WHERE cle = \'image_fond\';')) { $f = new Fichiers($current); $f->remove(); } if (strlen($this->config['image_fond']) > 0) { $f = Fichiers::storeFromBase64('Image_fond_admin.png', $this->config['image_fond']); $this->config['image_fond'] = $f->id; unset($f); } } $db->begin(); foreach ($this->modified as $key=>$modified) { $value = $this->config[$key]; if (is_array($value)) { $value = implode(',', $value); } elseif (is_object($value)) { $value = (string) $value; } $db->preparedQuery('INSERT OR REPLACE INTO config (cle, valeur) VALUES (?, ?);', [$key, $value]); } if (!empty($this->modified['champ_identifiant'])) { // Mettre les champs identifiant vides à NULL pour pouvoir créer un index unique $db->exec('UPDATE membres SET '.$this->get('champ_identifiant').' = NULL |
︙ | ︙ |
Modified src/include/lib/Garradin/Fichiers.php from [f167988a45] to [5ceea37710].
︙ | ︙ | |||
133 134 135 136 137 138 139 | $query = implode(' UNION ', $query) . ';'; if ($db->firstColumn($query)) { throw new \LogicException('Ce fichier est déjà lié à un autre contenu : ' . $check_type); } | | | 133 134 135 136 137 138 139 140 141 142 143 144 145 146 147 | $query = implode(' UNION ', $query) . ';'; if ($db->firstColumn($query)) { throw new \LogicException('Ce fichier est déjà lié à un autre contenu : ' . $check_type); } return $db->preparedQuery('INSERT OR IGNORE INTO fichiers_' . $type . ' (fichier, id) VALUES (?, ?);', [(int)$this->id, (int)$foreign_id]); } /** * Vérifie que l'utilisateur a bien le droit d'accéder à ce fichier * @param mixed $user Tableau contenant les infos sur l'utilisateur connecté, provenant de Session::getUser, ou false * @return boolean TRUE si l'utilisateur a le droit d'accéder au fichier, sinon FALSE |
︙ | ︙ |
Modified src/include/lib/Garradin/Sauvegarde.php from [e1a44c08fc] to [31ac9b4e77].
︙ | ︙ | |||
299 300 301 302 303 304 305 | { throw new UserException('Le fichier fourni n\'est pas une base de données valide. ' . 'Message d\'erreur de SQLite : ' . $e->getMessage(), self::NOT_A_DB); } try { // Regardons ensuite si la base de données n'est pas corrompue | | | | | | | | 299 300 301 302 303 304 305 306 307 308 309 310 311 312 313 314 315 316 317 318 319 320 321 322 323 324 325 326 327 328 329 330 331 332 333 334 335 336 337 338 339 340 341 342 343 344 345 346 347 348 349 350 351 352 353 354 355 | { throw new UserException('Le fichier fourni n\'est pas une base de données valide. ' . 'Message d\'erreur de SQLite : ' . $e->getMessage(), self::NOT_A_DB); } try { // Regardons ensuite si la base de données n'est pas corrompue $check = $db->firstColumn('PRAGMA integrity_check;', false); } catch (\Exception $e) { // Ici SQLite peut rejeter un message type "file is encrypted or is not a db" throw new UserException('Le fichier fourni n\'est pas une base de données valide. ' . 'Message d\'erreur de SQLite : ' . $e->getMessage(), self::NOT_A_DB); } if (strtolower(trim($check)) != 'ok') { throw new UserException('Le fichier fourni est corrompu. SQLite a trouvé ' . $check . ' erreurs.'); } // On ne peut pas faire de vérifications très poussées sur la structure de la base de données, // celle-ci pouvant changer d'une version à l'autre et on peut vouloir importer une base // un peu vieille, mais on vérifie quand même que ça ressemble un minimum à une base garradin $table = $db->firstColumn('SELECT 1 FROM sqlite_master WHERE type=\'table\' AND tbl_name=\'config\';', false); if (!$table) { throw new UserException('Le fichier fourni ne semble pas contenir de données liées à Garradin.'); } // On récupère la version $version = $db->firstColumn('SELECT valeur FROM config WHERE cle=\'version\';'); // Vérification de l'AppID pour les versions récentes if (version_compare($version, '0.8.0', '>=')) { $appid = $db->firstColumn('PRAGMA application_id;', false); if ($appid !== DB::APPID) { throw new UserException('Ce fichier n\'est pas une sauvegarde Garradin (application_id ne correspond pas).', self::NO_APP_ID); } } if ($user_id) { // Empêchons l'admin de se tirer une balle dans le pied $is_still_admin = $db->test('membres_categories', 'id = (SELECT id_categorie FROM membres WHERE id = ' . (int) $user_id . ') AND droit_config >= ' . Membres::DROIT_ADMIN . ' AND droit_connexion >= ' . Membres::DROIT_ACCES); if (!$is_still_admin) { $return |= self::NOT_AN_ADMIN; } |
︙ | ︙ |
Modified src/www/admin/compta/graph.php from [5c5372d696] to [1c8c6790d6].
︙ | ︙ | |||
34 35 36 37 38 39 40 | $r = new \KD2\SVGPlot_Data($stats->soldeCompte(Compta\Comptes::CAISSE)); $r->title = 'Caisse'; $data[] = $r; foreach ($banques->getList() as $banque) { | | | | 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 | $r = new \KD2\SVGPlot_Data($stats->soldeCompte(Compta\Comptes::CAISSE)); $r->title = 'Caisse'; $data[] = $r; foreach ($banques->getList() as $banque) { $r = new \KD2\SVGPlot_Data($stats->soldeCompte($banque->id)); $r->title = $banque->libelle; $data[] = $r; } $plot->setTitle('Solde des comptes et caisses'); } if (!empty($data)) |
︙ | ︙ |
Modified src/www/admin/upgrade.php from [fb4f431ebc] to [aa23dcf54d].
︙ | ︙ | |||
95 96 97 98 99 100 101 | $config->set('accueil_connexion', $page); $config->save(); } if (version_compare($v, '0.5.0', '<')) { // Récupération de l'ancienne config | | | | 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 | $config->set('accueil_connexion', $page); $config->save(); } if (version_compare($v, '0.5.0', '<')) { // Récupération de l'ancienne config $champs_modifiables_membre = $db->firstColumn('SELECT valeur FROM config WHERE cle = "champs_modifiables_membre";'); $champs_modifiables_membre = !empty($champs_modifiables_membre) ? explode(',', $champs_modifiables_membre) : []; $champs_obligatoires = $db->firstColumn('SELECT valeur FROM config WHERE cle = "champs_obligatoires";'); $champs_obligatoires = !empty($champs_obligatoires) ? explode(',', $champs_obligatoires) : []; // Import des champs membres par défaut $champs = Membres\Champs::importInstall(); // Application de l'ancienne config aux nouveaux champs membres foreach ($champs_obligatoires as $name) |
︙ | ︙ | |||
136 137 138 139 140 141 142 | $list = $categories->listComplete(); $db->exec('PRAGMA foreign_keys = OFF; BEGIN;'); // Mise à jour base de données $db->exec(file_get_contents(ROOT . '/include/data/0.6.0.sql')); | | | 136 137 138 139 140 141 142 143 144 145 146 147 148 149 150 | $list = $categories->listComplete(); $db->exec('PRAGMA foreign_keys = OFF; BEGIN;'); // Mise à jour base de données $db->exec(file_get_contents(ROOT . '/include/data/0.6.0.sql')); $id_cat_cotisation = $db->firstColumn('SELECT id FROM compta_categories WHERE compte = 756 LIMIT 1;'); // Conversion des cotisations de catégories en cotisations indépendantes foreach ($list as $cat) { $db->simpleInsert('cotisations', [ 'id_categorie_compta' => null, 'intitule' => $cat['nom'], |
︙ | ︙ |