ah oui
Marc SCHAEFER
schaefer at alphanet.ch
Tue Apr 3 12:01:39 CEST 2001
un truc que j'ai pondu avant d'avoir suivi le cours compta :)
n'hésitez pas à jeter :)
# TODO
# - fait_par REFERENCES this
# - auth through this.
# BUGS
# - Display routines sometimes count on numerical identifiant.
# MODIFICATION-HISTORY
# $Id: SQL,v 1.1 2001/03/03 11:35:04 schaefer Exp $
CREATE TABLE employe (initiales VARCHAR(2) NOT NULL,
nom VARCHAR(30) NOT NULL,
password VARCHAR(8) NOT NULL,
administrateur BOOL NOT NULL DEFAULT 'f',
UNIQUE(initiales), PRIMARY KEY(initiales));
CREATE TABLE contact (id SERIAL,
compagnie VARCHAR(30),
contact VARCHAR(30) NOT NULL,
telephone VARCHAR(20),
fax VARCHAR(20),
email VARCHAR(30),
npa_ville VARCHAR(30) NOT NULL,
adresse_1 VARCHAR(30) NOT NULL,
adresse_2 VARCHAR(30),
UNIQUE(id), PRIMARY KEY(id));
CREATE TABLE compte (nom VARCHAR(20) NOT NULL,
description text NOT NULL,
UNIQUE(nom), PRIMARY KEY(nom));
CREATE TABLE entree_type (nom VARCHAR(20) NOT NULL,
depense BOOL NOT NULL,
description TEXT NOT NULL,
valeur MONEY NOT NULL,
UNIQUE(nom), PRIMARY KEY (nom));
CREATE TABLE entree (id SERIAL,
date DATE NOT NULL DEFAULT CURRENT_DATE,
employe_initiales VARCHAR(2) NOT NULL REFERENCES employe,
entree_type_nom VARCHAR(20) NOT NULL
REFERENCES entree_type,
compte_nom VARCHAR(20) NOT NULL
REFERENCES compte,
contact_id INT4 NOT NULL REFERENCES contact,
nombre INT2 NOT NULL DEFAULT 1,
correction MONEY NOT NULL DEFAULT 0,
commentaire text,
UNIQUE(id), PRIMARY KEY(id));
# Examples
INSERT INTO employe(initiales, nom, password, administrateur)
VALUES ('ms', 'Marc SCHAEFER', 'demo', 't');
INSERT INTO compte(nom, description)
VALUES ('CCP', 'Compte de Chèques Postaux 20-33957-9');
INSERT INTO compte(nom, description)
VALUES ('Caisse', 'Caisse');
INSERT INTO entree_type(nom, depense, description, valeur)
VALUES ('100-CDR-RICOH', 't', 'Achat 100 CDRs Ricoh Internex', '120');
INSERT INTO entree_type(nom, depense, description, valeur)
VALUES ('100-CDR-VIVASTAR', 't', 'Achat 100 CDRs Vivastar', '130');
INSERT INTO contact(id, compagnie, contact, telephone, fax, email, npa_ville,
adresse_1)
VALUES (1, 'Demo SA', 'Guillaume Tell', '1234', '5678', 's at t', '2 1', 'a');
INSERT INTO entree(employe_initiales, entree_type_nom, compte_nom, contact_id,
nombre)
VALUES ('ms', '100-CDR', 'Caisse', 1, 1);
SELECT e.initiales,e.nom,c.nom,c.description,et.nom,et.depense,
et.description,et.valeur,ct.email,ct.compagnie,ent.nombre,
# ent.nombre * et.valeur * (et.depense ? -1 : 1) AS total
ent.nombre * et.valeur AS total_depenses
FROM employe e, compte c, entree_type et, contact ct, entree ent
WHERE (ent.employe_initiales = e.initiales)
AND (c.nom = ent.compte_nom)
AND (et.nom = ent.entree_type_nom)
AND (ct.id = ent.contact_id);
SELECT e.initiales,c.nom,et.depense,et.nom,et.valeur,ct.compagnie,ent.nombre, ent.nombre * et.valeur AS total_depenses FROM employe e, compte c, entree_type et, contact ct, entree ent WHERE (ent.employe_initiales = e.initiales) AND (c.nom = ent.compte_nom
) AND (et.nom = ent.entree_type_nom) AND (ct.id = ent.contact_id);
SELECT SUM((ent.nombre * et.valeur) + ent.correction) AS depenses FROM employe e, compte c, entree_type et, contact ct, entree ent WHERE (ent.employe_initiales = e.initiales) AND (c.nom = ent.compte_nom) AND (et.nom = ent.entree_type_nom) AND (ct.id = ent
.contact_id) AND et.depense;
SELECT SUM((ent.nombre * et.valeur) + ent.correction) AS entrees FROM employe e, compte c, entree_type et, contact ct, entree ent WHERE (ent.employe_initiales = e.initiales) AND (c.nom = ent.compte_nom) AND (et.nom = ent.entree_type_nom) AND (ct.id = ent.
contact_id) AND (NOT et.depense);
More information about the compta
mailing list