Référence d’une facture émise par l’outil de facturation externe, saisie à la main. BioTrace ne facture pas (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 facturée. Sert à l’isolation par RLS. |
| numero |
text |
|
false |
|
|
Numéro de la facture dans l’outil externe, unique par organisation. |
| montant |
bigint |
|
false |
|
|
Montant en unités mineures de la devise. |
| devise |
text |
|
false |
|
app.devise |
Code de la devise (app.devise). |
| emise_le |
date |
|
false |
|
|
Date d’émission. |
| echeance_le |
date |
|
false |
|
|
Dernier jour pour payer, inclus. « En retard » se calcule : émise, non payée, échéance dépassée. |
| statut |
text |
‘emise’::text |
false |
|
|
emise, payee ou annulee. Payée et annulée sont définitifs. |
| payee_le |
date |
|
true |
|
|
Date de paiement ; nulle tant que la facture n’est pas payée. |
| cree_par |
uuid |
|
false |
|
|
Identifiant Keycloak (sub) du membre de l’équipe de l’éditeur qui a saisi la référence. |
| cree_le |
timestamp with time zone |
now() |
false |
|
|
Date de saisie. |
| modifie_le |
timestamp with time zone |
now() |
false |
|
|
Dernière modification, tenue par un déclencheur. |
| Name |
Type |
Definition |
| facture_check |
CHECK |
CHECK ((echeance_le >= emise_le)) |
| facture_check1 |
CHECK |
CHECK (((statut = ‘payee’::text) = (payee_le IS NOT NULL))) |
| facture_montant_check |
CHECK |
CHECK ((montant > 0)) |
| facture_numero_check |
CHECK |
CHECK ((btrim(numero) <> ‘’::text)) |
| facture_statut_check |
CHECK |
CHECK ((statut = ANY (ARRAY[‘emise’::text, ‘payee’::text, ‘annulee’::text]))) |
| facture_organisation_id_fkey |
FOREIGN KEY |
FOREIGN KEY (organisation_id) REFERENCES app.organisation(id) |
| facture_devise_fkey |
FOREIGN KEY |
FOREIGN KEY (devise) REFERENCES app.devise(code) |
| facture_pkey |
PRIMARY KEY |
PRIMARY KEY (id) |
| facture_organisation_id_id_key |
UNIQUE |
UNIQUE (organisation_id, id) |
| facture_organisation_id_numero_key |
UNIQUE |
UNIQUE (organisation_id, numero) |
| Name |
Definition |
| facture_pkey |
CREATE UNIQUE INDEX facture_pkey ON app.facture USING btree (id) |
| facture_organisation_id_id_key |
CREATE UNIQUE INDEX facture_organisation_id_id_key ON app.facture USING btree (organisation_id, id) |
| facture_organisation_id_numero_key |
CREATE UNIQUE INDEX facture_organisation_id_numero_key ON app.facture USING btree (organisation_id, numero) |
| Name |
Definition |
| journal |
CREATE TRIGGER journal AFTER INSERT OR DELETE OR UPDATE ON app.facture FOR EACH ROW EXECUTE FUNCTION journal.tg_journaliser() |
| modifie_le |
CREATE TRIGGER modifie_le BEFORE UPDATE ON app.facture FOR EACH ROW EXECUTE FUNCTION app.tg_modifie_le() |
| controle |
CREATE TRIGGER controle BEFORE UPDATE ON app.facture FOR EACH ROW EXECUTE FUNCTION app.tg_facture_controle() |
erDiagram
"app.facture" }o--|| "app.organisation" : "FOREIGN KEY (organisation_id) REFERENCES app.organisation(id)"
"app.facture" }o--|| "app.devise" : "FOREIGN KEY (devise) REFERENCES app.devise(code)"
"app.facture" {
uuid id "Identifiant (UUID v7)."
uuid organisation_id FK "Organisation facturée. Sert à l'isolation par RLS."
text numero "Numéro de la facture dans l'outil externe, unique par organisation."
bigint montant "Montant en unités mineures de la devise."
text devise FK "Code de la devise (app.devise)."
date emise_le "Date d'émission."
date echeance_le "Dernier jour pour payer, inclus. « En retard » se calcule : émise, non payée, échéance dépassée."
text statut "`emise`, `payee` ou `annulee`. Payée et annulée sont définitifs."
date payee_le "Date de paiement ; nulle tant que la facture n'est pas payée."
uuid cree_par "Identifiant Keycloak (sub) du membre de l'équipe de l'éditeur qui a saisi la référence."
timestamp_with_time_zone cree_le "Date de saisie."
timestamp_with_time_zone modifie_le "Dernière modification, tenue par un déclencheur."
}
"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."
}
"app.devise" {
uuid id "Identifiant stable (UUID v7)."
text code "Code ISO 4217 en majuscules (XOF, EUR, USD), cible des clés étrangères de montants."
text libelle_fr "Libellé en français."
text libelle_en "Libellé en anglais."
smallint decimales "Nombre de décimales de la devise : l'unité mineure vaut 10^-décimales unité majeure (EUR 2, XOF 0)."
}
Generated by tbls