5 class Compta_Categories
11 public function importCategories()
13 $db = DB
::getInstance();
14 $db->exec(file_get_contents(ROOT
. '/include/data/categories_comptables.sql'));
17 public function add($data)
19 $this->_checkFields($data);
21 $db = DB
::getInstance();
23 if (empty($data['compte']) ||
!trim($data['compte']))
25 throw new UserException('Le compte associé ne peut rester vide.');
28 $data['compte'] = trim($data['compte']);
30 if (!$db->simpleQuerySingle('SELECT 1 FROM compta_comptes WHERE id = ?;', false, $data['compte']))
32 throw new UserException('Le compte associé n\'existe pas.');
35 if (!isset($data['type']) ||
36 ($data['type'] != self
::DEPENSES
&& $data['type'] != self
::RECETTES
))
38 // Catégories "autres" pas possibles pour le moment
39 throw new UserException('Type de catégorie inconnu.');
42 $db->simpleInsert('compta_categories', [
43 'intitule' => $data['intitule'],
44 'description'=> $data['description'],
45 'compte' => $data['compte'],
46 'type' => (int)$data['type'],
49 return $db->lastInsertRowId();
52 public function edit($id, $data)
54 $this->_checkFields($data);
56 $db = DB
::getInstance();
58 $db->simpleUpdate('compta_categories',
60 'intitule' => $data['intitule'],
61 'description'=> $data['description'],
63 'id = \''.$db->escapeString(trim($id)).'\'');
68 public function delete($id)
70 $db = DB
::getInstance();
72 // Ne pas supprimer une catégorie qui est utilisée !
73 if ($db->simpleQuerySingle('SELECT 1 FROM compta_journal WHERE id_categorie = ? LIMIT 1;', false, $id))
75 throw new UserException('Cette catégorie ne peut être supprimée car des opérations comptables y sont liées.');
78 $db->simpleExec('DELETE FROM compta_categories WHERE id = ?;', $id);
83 public function get($id)
85 $db = DB
::getInstance();
86 return $db->simpleQuerySingle('SELECT * FROM compta_categories WHERE id = ?;', true, (int)$id);
89 public function getList($type = null)
91 $db = DB
::getInstance();
92 $type = is_null($type) ?
'' : 'cat.type = '.(int)$type;
93 return $db->simpleStatementFetchAssocKey('
94 SELECT cat.id, cat.*, cc.libelle AS compte_libelle
95 FROM compta_categories AS cat INNER JOIN compta_comptes AS cc
97 WHERE '.$type.' ORDER BY cat.intitule;', SQLITE3_ASSOC
);
100 public function listMoyensPaiement()
102 $db = DB
::getInstance();
103 return $db->simpleStatementFetchAssocKey('SELECT code, nom FROM compta_moyens_paiement ORDER BY nom COLLATE NOCASE;');
106 public function getMoyenPaiement($code)
108 $db = DB
::getInstance();
109 return $db->simpleQuerySingle('SELECT nom FROM compta_moyens_paiement WHERE code = ?;', false, $code);
112 protected function _checkFields(&$data)
114 if (empty($data['intitule']) ||
!trim($data['intitule']))
116 throw new UserException('L\'intitulé ne peut rester vide.');
119 $data['intitule'] = trim($data['intitule']);
120 $data['description'] = isset($data['description']) ?
trim($data['description']) : '';