init
[garradin.git] / include / data / 0.4.3.sql
1 DROP TABLE compta_exercices;
2
3 CREATE TABLE compta_exercices
4 -- Exercices
5 (
6 id INTEGER PRIMARY KEY,
7
8 libelle TEXT NOT NULL,
9
10 debut TEXT NOT NULL DEFAULT CURRENT_DATE,
11 fin TEXT NULL DEFAULT NULL,
12
13 cloture INTEGER NOT NULL DEFAULT 0
14 );
15
16 INSERT INTO compta_exercices (libelle, debut, fin, cloture)
17 VALUES (
18 'Premier exercice',
19 (CASE WHEN
20 (SELECT strftime('%Y-01-01', date) FROM compta_journal ORDER BY date ASC LIMIT 1)
21 IS NOT NULL THEN (SELECT strftime('%Y-01-01', date) FROM compta_journal ORDER BY date ASC LIMIT 1)
22 ELSE strftime('%Y-01-01', 'now') END
23 ),
24 (CASE WHEN
25 (SELECT strftime('%Y-12-31', date) FROM compta_journal ORDER BY date DESC LIMIT 1)
26 IS NOT NULL THEN (SELECT strftime('%Y-12-31', date) FROM compta_journal ORDER BY date DESC LIMIT 1)
27 ELSE strftime('%Y-12-31', 'now') END
28 ),
29 0
30 );
31
32 BEGIN;
33 ALTER TABLE compta_journal RENAME TO old_compta_journal;
34 DROP INDEX compta_operations_exercice;
35 DROP INDEX compta_operations_date;
36 DROP INDEX compta_operations_comptes;
37 DROP INDEX compta_operations_auteur;
38
39 CREATE TABLE compta_journal
40 -- Journal des opérations comptables
41 (
42 id INTEGER PRIMARY KEY,
43
44 libelle TEXT NOT NULL,
45 remarques TEXT,
46 numero_piece TEXT, -- N° de pièce comptable
47
48 montant REAL,
49
50 date TEXT DEFAULT CURRENT_DATE,
51 moyen_paiement TEXT DEFAULT NULL,
52 numero_cheque TEXT DEFAULT NULL,
53
54 compte_debit INTEGER, -- N° du compte dans le plan
55 compte_credit INTEGER, -- N° du compte dans le plan
56
57 id_exercice INTEGER NULL DEFAULT NULL, -- En cas de compta simple, l'exercice est permanent (NULL)
58 id_auteur INTEGER NULL,
59 id_categorie INTEGER NULL, -- Numéro de catégorie (en mode simple)
60
61 FOREIGN KEY(moyen_paiement) REFERENCES compta_moyens_paiement(code),
62 FOREIGN KEY(compte_debit) REFERENCES compta_comptes(id),
63 FOREIGN KEY(compte_credit) REFERENCES compta_comptes(id),
64 FOREIGN KEY(id_exercice) REFERENCES compta_exercices(id),
65 FOREIGN KEY(id_auteur) REFERENCES membres(id),
66 FOREIGN KEY(id_categorie) REFERENCES compta_categories(id)
67 );
68
69 CREATE INDEX compta_operations_exercice ON compta_journal (id_exercice);
70 CREATE INDEX compta_operations_date ON compta_journal (date);
71 CREATE INDEX compta_operations_comptes ON compta_journal (compte_debit, compte_credit);
72 CREATE INDEX compta_operations_auteur ON compta_journal (id_auteur);
73
74 INSERT INTO compta_journal SELECT * FROM old_compta_journal;
75
76 UPDATE compta_journal SET id_exercice = 1;
77
78 DROP TABLE old_compta_journal;
79 END;