Amélioration #1519
ouvert[Sequence] getCurSequence ne devrait être utilisé pour générer des numéro de référence
0%
Deux points me semblent intéressant :
rendre getCurSequence dans le nom prête à confusion deprecated
renommer getCurSequence, en getNbDocsByFam avec les paramètres suivants (famName ou id par défaut à $this->fromid et noInHeritance par défaut à true et qui permet à false d'avoir l'ensemble des documents)
supprimer l'exemple cité de la doc
============ Autre Solution ======
Ajouter le type "serial" dans les attribut. Cet attribut en lecture seule serait incrémenté lors d'une création. Il disposera d'une option ( subfamilies=yes) pour être aussi incrémenter lors de création de document d'une sous-famille.
Description
Etant donné que getCurSequence est appelé dans sa propre session postgresql, on ne peut jamais être sûr que le numéro de séquence soit unique au moment de l'insertion en base (cas des accès concurrents) :
le code ci-dessous ne permet donc pas d'avoir un numéro de référence unique :
function postCreated() {
if ( $this->revision == 0) {
//// mise à jour de numéro de séquence//
$this->setValue("FACT_NUMBER",$this->getCurSequence());
}
}
Mis à jour par Charles Bonnissent il y a environ 15 ans
et il faudrait aussi penser à indiquer la visibilité de getNextSequence (à mon sens private ou au moins protected)