DROP TABLE compta_exercices;
CREATE TABLE compta_exercices
-- Exercices
(
id INTEGER PRIMARY KEY,
libelle TEXT NOT NULL,
debut TEXT NOT NULL DEFAULT CURRENT_DATE,
fin TEXT NULL DEFAULT NULL,
cloture INTEGER NOT NULL DEFAULT 0
);
INSERT INTO compta_exercices (libelle, debut, fin, cloture)
VALUES (
'Premier exercice',
(CASE WHEN
(SELECT strftime('%Y-01-01', date) FROM compta_journal ORDER BY date ASC LIMIT 1)
IS NOT NULL THEN (SELECT strftime('%Y-01-01', date) FROM compta_journal ORDER BY date ASC LIMIT 1)
ELSE strftime('%Y-01-01', 'now') END
),
(CASE WHEN
(SELECT strftime('%Y-12-31', date) FROM compta_journal ORDER BY date DESC LIMIT 1)
IS NOT NULL THEN (SELECT strftime('%Y-12-31', date) FROM compta_journal ORDER BY date DESC LIMIT 1)
ELSE strftime('%Y-12-31', 'now') END
),
0
);
BEGIN;
ALTER TABLE compta_journal RENAME TO old_compta_journal;
DROP INDEX compta_operations_exercice;
DROP INDEX compta_operations_date;
DROP INDEX compta_operations_comptes;
DROP INDEX compta_operations_auteur;
CREATE TABLE compta_journal
-- Journal des opérations comptables
(
id INTEGER PRIMARY KEY,
libelle TEXT NOT NULL,
remarques TEXT,
numero_piece TEXT, -- N° de pièce comptable
montant REAL,
date TEXT DEFAULT CURRENT_DATE,
moyen_paiement TEXT DEFAULT NULL,
numero_cheque TEXT DEFAULT NULL,
compte_debit INTEGER, -- N° du compte dans le plan
compte_credit INTEGER, -- N° du compte dans le plan
id_exercice INTEGER NULL DEFAULT NULL, -- En cas de compta simple, l'exercice est permanent (NULL)
id_auteur INTEGER NULL,
id_categorie INTEGER NULL, -- Numéro de catégorie (en mode simple)
FOREIGN KEY(moyen_paiement) REFERENCES compta_moyens_paiement(code),
FOREIGN KEY(compte_debit) REFERENCES compta_comptes(id),
FOREIGN KEY(compte_credit) REFERENCES compta_comptes(id),
FOREIGN KEY(id_exercice) REFERENCES compta_exercices(id),
FOREIGN KEY(id_auteur) REFERENCES membres(id),
FOREIGN KEY(id_categorie) REFERENCES compta_categories(id)
);
CREATE INDEX compta_operations_exercice ON compta_journal (id_exercice);
CREATE INDEX compta_operations_date ON compta_journal (date);
CREATE INDEX compta_operations_comptes ON compta_journal (compte_debit, compte_credit);
CREATE INDEX compta_operations_auteur ON compta_journal (id_auteur);
INSERT INTO compta_journal SELECT * FROM old_compta_journal;
UPDATE compta_journal SET id_exercice = 1;
DROP TABLE old_compta_journal;
END;