Ligne d’un mouvement : quantité signée entrée dans un compte (positive) ou sortie (négative), en grammes.
| Name |
Type |
Default |
Nullable |
Children |
Parents |
Comment |
| id |
uuid |
app.uuid_v7() |
false |
|
|
Identifiant de la ligne (UUID v7). |
| organisation_id |
uuid |
|
false |
|
app.compte_matiere app.mouvement app.produit |
Organisation propriétaire de la ligne. Sert à l’isolation par RLS (EC-032) et au filtrage de la synchronisation. |
| mouvement_id |
uuid |
|
false |
|
app.mouvement |
Mouvement auquel appartient la ligne. |
| compte_matiere_id |
uuid |
|
false |
|
app.compte_matiere |
Compte débité ou crédité. |
| produit_id |
uuid |
|
false |
|
app.produit |
Produit concerné, de la même organisation (clé étrangère posée au Lot 1, séquence A2). |
| quantite_g |
bigint |
|
false |
|
|
Quantité en grammes, signée et non nulle. |
| cree_le |
timestamp with time zone |
now() |
false |
|
|
Date de création de la ligne. |
| Name |
Type |
Definition |
| mouvement_ligne_equilibre |
TRIGGER |
CREATE CONSTRAINT TRIGGER mouvement_ligne_equilibre AFTER INSERT ON app.mouvement_ligne DEFERRABLE INITIALLY DEFERRED FOR EACH ROW EXECUTE FUNCTION app.tg_mouvement_equilibre() |
| mouvement_ligne_quantite_g_check |
CHECK |
CHECK ((quantite_g <> 0)) |
| mouvement_ligne_organisation_id_compte_matiere_id_fkey |
FOREIGN KEY |
FOREIGN KEY (organisation_id, compte_matiere_id) REFERENCES app.compte_matiere(organisation_id, id) |
| mouvement_ligne_organisation_id_mouvement_id_fkey |
FOREIGN KEY |
FOREIGN KEY (organisation_id, mouvement_id) REFERENCES app.mouvement(organisation_id, id) |
| mouvement_ligne_pkey |
PRIMARY KEY |
PRIMARY KEY (id) |
| mouvement_ligne_produit_fk |
FOREIGN KEY |
FOREIGN KEY (organisation_id, produit_id) REFERENCES app.produit(organisation_id, id) |
| Name |
Definition |
| mouvement_ligne_pkey |
CREATE UNIQUE INDEX mouvement_ligne_pkey ON app.mouvement_ligne USING btree (id) |
| mouvement_ligne_mouvement_idx |
CREATE INDEX mouvement_ligne_mouvement_idx ON app.mouvement_ligne USING btree (mouvement_id) |
| mouvement_ligne_compte_idx |
CREATE INDEX mouvement_ligne_compte_idx ON app.mouvement_ligne USING btree (organisation_id, compte_matiere_id, produit_id) |
| Name |
Definition |
| journal |
CREATE TRIGGER journal AFTER INSERT OR DELETE OR UPDATE ON app.mouvement_ligne FOR EACH ROW EXECUTE FUNCTION journal.tg_journaliser() |
| ajout_seul |
CREATE TRIGGER ajout_seul BEFORE DELETE OR UPDATE ON app.mouvement_ligne FOR EACH ROW EXECUTE FUNCTION app.tg_ajout_seul() |
| mouvement_ligne_equilibre |
CREATE CONSTRAINT TRIGGER mouvement_ligne_equilibre AFTER INSERT ON app.mouvement_ligne DEFERRABLE INITIALLY DEFERRED FOR EACH ROW EXECUTE FUNCTION app.tg_mouvement_equilibre() |
| lot_quarantaine_sortie |
CREATE TRIGGER lot_quarantaine_sortie BEFORE INSERT ON app.mouvement_ligne FOR EACH ROW EXECUTE FUNCTION app.tg_lot_quarantaine_sortie() |
erDiagram
"app.mouvement_ligne" }o--|| "app.compte_matiere" : "FOREIGN KEY (organisation_id, compte_matiere_id) REFERENCES app.compte_matiere(organisation_id, id)"
"app.mouvement_ligne" }o--|| "app.mouvement" : "FOREIGN KEY (organisation_id, mouvement_id) REFERENCES app.mouvement(organisation_id, id)"
"app.mouvement_ligne" }o--|| "app.produit" : "FOREIGN KEY (organisation_id, produit_id) REFERENCES app.produit(organisation_id, id)"
"app.mouvement_ligne" {
uuid id "Identifiant de la ligne (UUID v7)."
uuid organisation_id FK "Organisation propriétaire de la ligne. Sert à l'isolation par RLS (EC-032) et au filtrage de la synchronisation."
uuid mouvement_id FK "Mouvement auquel appartient la ligne."
uuid compte_matiere_id FK "Compte débité ou crédité."
uuid produit_id FK "Produit concerné, de la même organisation (clé étrangère posée au Lot 1, séquence A2)."
bigint quantite_g "Quantité en grammes, signée et non nulle."
timestamp_with_time_zone cree_le "Date de création de la ligne."
}
"app.compte_matiere" {
uuid id "Identifiant du compte (UUID v7)."
uuid organisation_id FK "Organisation propriétaire de la ligne. Sert à l'isolation par RLS (EC-032) et au filtrage de la synchronisation."
text nature "Nature du compte. Un seul compte technique par nature et par organisation ; les lots sont illimités."
text libelle "Libellé du compte."
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."
}
"app.mouvement" {
uuid id "Identifiant du mouvement (UUID v7)."
uuid organisation_id FK "Organisation propriétaire de la ligne. Sert à l'isolation par RLS (EC-032) et au filtrage de la synchronisation."
text nature "Nature : reception, transfert, transformation, expedition, perte, inventaire ou contrepassation."
timestamp_with_time_zone date_operation "Date de l'opération sur le terrain ou à la balance."
uuid contrepasse_mouvement_id FK "Mouvement annulé par cette contre-passation. Un mouvement n'est contre-passé qu'une fois."
text motif "Motif, obligatoire pour une contre-passation."
uuid commande_id "Commande de synchronisation à l'origine du mouvement."
uuid cree_par FK "Utilisateur auteur du mouvement."
timestamp_with_time_zone cree_le "Date de création de la ligne."
uuid etape_realisee_id FK "Étape réalisée à laquelle se rattache un mouvement de transformation (AM-12) ; obligatoire pour ce type de mouvement, vide pour les autres."
}
"app.produit" {
uuid id "Identifiant stable (UUID v7)."
uuid organisation_id FK "Organisation propriétaire. Sert à l'isolation par RLS (EC-032)."
text code "Code du produit, inséré dans le numéro officiel (segment « produit »). Unique par organisation (EC-063)."
text nom_fr "Nom en français."
text nom_en "Nom en anglais."
text unite_code FK "Unité de saisie et d'affichage."
boolean est_matiere_premiere "Vrai pour une matière première, faux pour un produit fini."
uuid matiere_premiere_liee_id FK "Matière première dont le produit fini est issu. Réservé aux produits finis, de la même organisation."
text code_modele "Code du modèle de produit du pack qui a servi à créer la ligne. Nul pour un produit créé à la main."
uuid pack_version_id FK "Version de pack d'origine. Nulle pour un produit créé à la main ; nulle exactement quand code_modele l'est."
boolean actif "Faux quand le produit n'est plus utilisé. Un produit n'est jamais supprimé."
timestamp_with_time_zone cree_le "Date de création de la ligne."
timestamp_with_time_zone modifie_le "Date de dernière modification."
}
Generated by tbls