Devise ISO 4217 connue de BioTrace, avec son nombre de décimales. Globale, en lecture seule pour l’API. Sert aux montants en unités mineures et au passage du taux publié au taux applicable (EC-070).
| Name |
Type |
Default |
Nullable |
Children |
Parents |
Comment |
| id |
uuid |
app.uuid_v7() |
false |
|
|
Identifiant stable (UUID v7). |
| code |
text |
|
false |
app.contrat_ligne app.vente app.facture |
|
Code ISO 4217 en majuscules (XOF, EUR, USD), cible des clés étrangères de montants. |
| libelle_fr |
text |
|
false |
|
|
Libellé en français. |
| libelle_en |
text |
|
false |
|
|
Libellé en anglais. |
| decimales |
smallint |
|
false |
|
|
Nombre de décimales de la devise : l’unité mineure vaut 10^-décimales unité majeure (EUR 2, XOF 0). |
| Name |
Type |
Definition |
| devise_code_check |
CHECK |
CHECK ((code ~ ‘^[A-Z]{3}$’::text)) |
| devise_decimales_check |
CHECK |
CHECK (((decimales >= 0) AND (decimales <= 6))) |
| devise_libelle_en_check |
CHECK |
CHECK ((libelle_en <> ‘’::text)) |
| devise_libelle_fr_check |
CHECK |
CHECK ((libelle_fr <> ‘’::text)) |
| devise_pkey |
PRIMARY KEY |
PRIMARY KEY (id) |
| devise_code_key |
UNIQUE |
UNIQUE (code) |
| Name |
Definition |
| devise_pkey |
CREATE UNIQUE INDEX devise_pkey ON app.devise USING btree (id) |
| devise_code_key |
CREATE UNIQUE INDEX devise_code_key ON app.devise USING btree (code) |
| Name |
Definition |
| journal |
CREATE TRIGGER journal AFTER INSERT OR DELETE OR UPDATE ON app.devise FOR EACH ROW EXECUTE FUNCTION journal.tg_journaliser() |
| ajout_seul |
CREATE TRIGGER ajout_seul BEFORE DELETE OR UPDATE ON app.devise FOR EACH ROW EXECUTE FUNCTION app.tg_ajout_seul() |
erDiagram
"app.contrat_ligne" }o--|| "app.devise" : "FOREIGN KEY (devise) REFERENCES app.devise(code)"
"app.vente" }o--|| "app.devise" : "FOREIGN KEY (devise) REFERENCES app.devise(code)"
"app.facture" }o--|| "app.devise" : "FOREIGN KEY (devise) REFERENCES app.devise(code)"
"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)."
}
"app.contrat_ligne" {
uuid id "Identifiant stable (UUID v7)."
uuid organisation_id FK "Organisation propriétaire. Sert à l'isolation par RLS (EC-032)."
uuid contrat_id FK "Contrat de la ligne (de la même organisation)."
uuid produit_id FK "Produit de la ligne (de la même organisation), unique dans le contrat."
bigint quantite_engagee_g "Quantité engagée en grammes (EC-030), strictement positive."
bigint prix_unite_mineure "Prix de base en unités mineures de la devise, par unité de prix (par exemple 150 XOF le kilo). Jamais sans devise."
text devise FK "Devise du prix, code ISO 4217 connu de app.devise (EC-028)."
text unite_prix FK "Unité du prix (`g`, `kg`, `t`) : le prix vaut par cette unité. Le stock reste en grammes (EC-030)."
integer tolerance_cp "Tolérance sur la quantité engagée, en centièmes de point. L'alerte de solde au-delà est calculée au Lot 2."
jsonb formule_refaction "Formule de réfaction en JSON (aucune, excedent_lineaire, lineaire_simple, bilan_de_masse), forme validée par FormuleRefaction (Ajv) ; le mode d'arrondi en fait partie (EC-051). Lue par calculerPesee à la réception."
timestamp_with_time_zone cree_le "Date de création de la ligne."
timestamp_with_time_zone modifie_le "Date de dernière modification."
}
"app.vente" {
uuid id "Identifiant de la vente (UUID v7)."
uuid organisation_id FK "Organisation propriétaire (isolation par ligne)."
uuid client_id FK "Client acheteur."
uuid contrat_id FK "Contrat de vente actif du même client, facultatif : vide pour une vente « spot ». Sa tolérance s'ajoute à la quantité engagée."
uuid produit_id FK "Produit vendu : celui de tous les lots expédiés."
text referentiel_code FK "Référentiel revendiqué sur la vente (RG-156, AV1-03) ; vide si la vente ne revendique aucun référentiel."
bigint quantite_engagee_g "Quantité vendue en grammes. Le total expédié ne la dépasse pas, tolérance du contrat comprise."
bigint prix_unite_mineure "Prix par unité de prix, en unités mineures de la devise."
text unite_prix FK "Unité à laquelle le prix s'applique (kilogramme, tonne…)."
text devise FK "Devise du prix."
date date_operation "Date de la vente."
text statut "Statut : brouillon, validee, soldee ou annulee. Une vente annulée ne peut plus avoir d'expédition validée."
uuid valide_par FK "Utilisateur qui a validé la vente ; vide tant qu'elle est en brouillon."
timestamp_with_time_zone valide_le "Date de validation de la vente."
uuid cree_par FK "Utilisateur qui a saisi la vente."
timestamp_with_time_zone cree_le "Date de saisie de la vente."
timestamp_with_time_zone modifie_le "Date de la dernière modification de la vente."
}
"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."
}
Generated by tbls