init
[garradin.git] / include / data / 0.4.0.sql
1 CREATE TABLE compta_exercices
2 -- Exercices
3 (
4 id INTEGER PRIMARY KEY,
5
6 libelle TEXT NOT NULL,
7
8 debut TEXT NOT NULL DEFAULT CURRENT_DATE,
9 fin TEXT NULL DEFAULT NULL,
10
11 clos INTEGER NOT NULL DEFAULT 0
12 );
13
14
15 CREATE TABLE compta_comptes
16 -- Plan comptable
17 (
18 id TEXT PRIMARY KEY,
19 parent TEXT NOT NULL DEFAULT 0,
20
21 libelle TEXT NOT NULL,
22
23 position INTEGER NOT NULL, -- position actif/passif/charge/produit
24 plan_comptable INTEGER NOT NULL DEFAULT 1 -- 1 = fait partie du plan comptable, 0 = a été ajouté par l'utilisateur
25 );
26
27 CREATE INDEX compta_comptes_parent ON compta_comptes (parent);
28
29 CREATE TABLE compta_comptes_bancaires
30 -- Comptes bancaires
31 (
32 id TEXT PRIMARY KEY,
33
34 banque TEXT NOT NULL,
35
36 iban TEXT,
37 bic TEXT,
38
39 FOREIGN KEY(id) REFERENCES compta_comptes(id)
40 );
41
42 CREATE TABLE compta_journal
43 -- Journal des opérations comptables
44 (
45 id INTEGER PRIMARY KEY,
46
47 libelle TEXT NOT NULL,
48 remarques TEXT,
49 numero_piece TEXT, -- N° de pièce comptable
50
51 montant REAL,
52
53 date TEXT DEFAULT CURRENT_DATE,
54 moyen_paiement TEXT DEFAULT NULL,
55 numero_cheque TEXT DEFAULT NULL,
56
57 compte_debit INTEGER, -- N° du compte dans le plan
58 compte_credit INTEGER, -- N° du compte dans le plan
59
60 id_exercice INTEGER NULL DEFAULT NULL, -- En cas de compta simple, l'exercice est permanent (NULL)
61 id_auteur INTEGER NOT NULL,
62 id_categorie INTEGER NULL, -- Numéro de catégorie (en mode simple)
63
64 FOREIGN KEY(moyen_paiement) REFERENCES compta_moyens_paiement(code),
65 FOREIGN KEY(compte_debit) REFERENCES compta_comptes(id),
66 FOREIGN KEY(compte_credit) REFERENCES compta_comptes(id),
67 FOREIGN KEY(id_exercice) REFERENCES compta_exercices(id),
68 FOREIGN KEY(id_auteur) REFERENCES membres(id),
69 FOREIGN KEY(id_categorie) REFERENCES compta_categories(id)
70 );
71
72 CREATE INDEX compta_operations_exercice ON compta_journal (id_exercice);
73 CREATE INDEX compta_operations_date ON compta_journal (date);
74 CREATE INDEX compta_operations_comptes ON compta_journal (compte_debit, compte_credit);
75 CREATE INDEX compta_operations_auteur ON compta_journal (id_auteur);
76
77 CREATE TABLE compta_moyens_paiement
78 -- Moyens de paiement
79 (
80 code TEXT PRIMARY KEY,
81 nom TEXT
82 );
83
84 INSERT INTO compta_moyens_paiement (code, nom) VALUES ('CB', 'Carte bleue');
85 INSERT INTO compta_moyens_paiement (code, nom) VALUES ('CH', 'Chèque');
86 INSERT INTO compta_moyens_paiement (code, nom) VALUES ('ES', 'Espèces');
87 INSERT INTO compta_moyens_paiement (code, nom) VALUES ('PR', 'Prélèvement');
88 INSERT INTO compta_moyens_paiement (code, nom) VALUES ('TI', 'TIP');
89 INSERT INTO compta_moyens_paiement (code, nom) VALUES ('VI', 'Virement');
90
91 CREATE TABLE compta_categories
92 -- Catégories pour simplifier le plan comptable
93 (
94 id INTEGER PRIMARY KEY,
95 type INTEGER DEFAULT 1, -- 1 = recette, -1 = dépense, 0 = autre (utilisé uniquement pour l'interface)
96
97 intitule TEXT NOT NULL,
98 description TEXT,
99
100 compte TEXT NOT NULL, -- Compte affecté par cette catégorie
101
102 FOREIGN KEY(compte) REFERENCES compta_comptes(id)
103 );