Aller au contenu

app.mouvement_ligne

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