Licence d’une organisation : modules ouverts pour une période. Ajout seul, la plus récente fait foi. Informative : rien n’est bloqué à l’échéance (EC-129).
| Name |
Type |
Default |
Nullable |
Children |
Parents |
Comment |
| id |
uuid |
app.uuid_v7() |
false |
|
|
Identifiant (UUID v7). |
| organisation_id |
uuid |
|
false |
|
app.organisation |
Organisation licenciée. Sert à l’isolation par RLS. |
| debut |
date |
|
false |
|
|
Premier jour de la licence, inclus. |
| fin |
date |
|
false |
|
|
Dernier jour de la licence, inclus. « Échue » se calcule à partir de cette date. |
| modules |
text[] |
|
false |
|
|
Codes des modules ouverts, hors noyau (toujours actif), sans doublon. |
| motif |
text |
|
false |
|
|
Motif écrit de la licence (nouvelle licence, renouvellement, correction). |
| cree_par |
uuid |
|
false |
|
|
Identifiant Keycloak (sub) du membre de l’équipe de l’éditeur qui a saisi la licence. |
| cree_le |
timestamp with time zone |
now() |
false |
|
|
Date de saisie. |
| Name |
Type |
Definition |
| licence_check |
CHECK |
CHECK ((fin >= debut)) |
| licence_motif_check |
CHECK |
CHECK ((btrim(motif) <> ‘’::text)) |
| licence_organisation_id_fkey |
FOREIGN KEY |
FOREIGN KEY (organisation_id) REFERENCES app.organisation(id) |
| licence_pkey |
PRIMARY KEY |
PRIMARY KEY (id) |
| licence_organisation_id_id_key |
UNIQUE |
UNIQUE (organisation_id, id) |
| Name |
Definition |
| licence_pkey |
CREATE UNIQUE INDEX licence_pkey ON app.licence USING btree (id) |
| licence_organisation_id_id_key |
CREATE UNIQUE INDEX licence_organisation_id_id_key ON app.licence USING btree (organisation_id, id) |
| licence_courante_idx |
CREATE INDEX licence_courante_idx ON app.licence USING btree (organisation_id, cree_le DESC) |
| Name |
Definition |
| journal |
CREATE TRIGGER journal AFTER INSERT OR DELETE OR UPDATE ON app.licence FOR EACH ROW EXECUTE FUNCTION journal.tg_journaliser() |
| ajout_seul |
CREATE TRIGGER ajout_seul BEFORE DELETE OR UPDATE ON app.licence FOR EACH ROW EXECUTE FUNCTION app.tg_ajout_seul() |
| controle |
CREATE TRIGGER controle BEFORE INSERT ON app.licence FOR EACH ROW EXECUTE FUNCTION app.tg_licence_controle() |
erDiagram
"app.licence" }o--|| "app.organisation" : "FOREIGN KEY (organisation_id) REFERENCES app.organisation(id)"
"app.licence" {
uuid id "Identifiant (UUID v7)."
uuid organisation_id FK "Organisation licenciée. Sert à l'isolation par RLS."
date debut "Premier jour de la licence, inclus."
date fin "Dernier jour de la licence, inclus. « Échue » se calcule à partir de cette date."
text__ modules "Codes des modules ouverts, hors noyau (toujours actif), sans doublon."
text motif "Motif écrit de la licence (nouvelle licence, renouvellement, correction)."
uuid cree_par "Identifiant Keycloak (sub) du membre de l'équipe de l'éditeur qui a saisi la licence."
timestamp_with_time_zone cree_le "Date de saisie."
}
"app.organisation" {
uuid id "Identifiant de l'organisation (UUID v7)."
text code "Code court en majuscules. Immuable : il figure dans les identifiants Keycloak (coopa.agent01). « EXT » est réservé."
text nom "Nom de l'organisation."
text pays "Pays, code ISO 3166-1 alpha-2."
text langue "Langue de l'organisation : fr ou en."
text fuseau_horaire "Fuseau horaire IANA utilisé pour l'affichage des dates."
text devise_defaut "Devise par défaut des montants, code ISO 4217."
text keycloak_organisation_id "Identifiant de l'organisation dans Keycloak."
text organisme_certificateur "Organisme de certification de l'organisation. Aucun contrôle de format (EC-027)."
text code_operateur "Code d'opérateur attribué par l'organisme certificateur."
uuid logo_fichier_id FK "Fichier du logo (EC-029)."
timestamp_with_time_zone cree_le "Date de création de la ligne."
timestamp_with_time_zone modifie_le "Date de la dernière modification, tenue par un déclencheur."
text source_conformite "Source des décisions de conformité : `interne` (contrôle interne de BioTrace) ou `externe` (outil tiers). Une seule source active à la fois ; app.statut_conformite.source doit lui être égale."
text statut "État du compte client : `active` ou `suspendue`. Une organisation suspendue est refusée par la garde d'authentification (`organisation_suspendue`) ; ses données et ses comptes sont conservés. Décidé par l'équipe de l'éditeur (EC-126)."
timestamp_with_time_zone suspendue_le "Date de la suspension en cours ; nulle tant que l'organisation est active."
}
Generated by tbls