13.6.3.34 Doc::setState()
La méthode setState permet de changer l'état d'un document sur son cycle de
vie associé.
13.6.3.34.1 Description
string setState ( string $newstate, string $comment = '', bool $force = false, bool $withcontrol = true, bool $wm1 = true, bool $wm2 = true, bool $wneed = true, bool $wm0 = true, bool $wm3 = true, string & $msg = '' )
La méthode setState permet de changer l'état du document si celui-ci est
associé à un cycle de vie.
13.6.3.34.1.1 Avertissements
Aucun.
13.6.3.34.2 Liste des paramètres
- (string)
newstate -
newstateest le nom de l'état (de destination) dans lequel on souhaite mettre le document. - (string)
comment -
commentpermet de spécifier un commentaire facultatif qui est inscrit dans l'historique du document suite à son changement d'état.Par défaut
commentest une chaîne vide, et aucun message additionnel n'est inscrit dans l'historique du document. - (bool)
force -
forcepermet de forcer le changement d'état pour le cas ou l'état demandé n'est pas associé à une transition valide du cycle de vie.Par défaut
forceest àfalse, et le nouvel état demandé (de destination) doit alors avoir une transition valide avec l'état actuel (de départ) du document. - (bool)
withcontrol -
withcontrolpermet de désactiver le contrôle des droits sur les transitions du cycle.Par défaut
withcontrolest àtrue, et le contrôle des droits sur les transitions du cycle est appliqué. - (bool)
wm1 -
wm1permet de spécifier si la méthodem1de la transition doit être appliquée.Par défaut
wm1est àtrue, et la méthodem1de la transition est appliquée. - (bool)
wm2 -
wm2permet de spécifier si la méthodem2de la transition doit être appliquée.Par défaut
wm2est àtrue, et la méthodem2de la transition est appliquée. - (bool)
wneed -
wneedpermet de spécifier si le contrôle des attributs obligatoire du document doit être appliqué.Par défaut
wneedest àtrue, et le contrôle des attributs obligatoire du document est appliqué. - (bool)
wm0 -
wm0permet de spécifier si la méthodem0de la transition doit être appliquée.Par défaut
wm0est àtrue, et la méthodem0de la transition est appliquée. - (bool)
wm3 -
wm3permet de spécifier si la méthodem3de la transition doit être appliquée.Par défaut
wm3est àtrue, et la méthodem3de la transition est appliquée. - [out] (string)
msg -
msgest une référence facultative à une chaîne de caractères qui est retournée par la méthode et qui contient les messages retournées par les méthodesm1,m2et l'émission des mails déclarés sur le cycle.
13.6.3.34.3 Valeur de retour
La méthode retourne une chaîne vide s'il n'y a pas d'erreurs, ou une chaîne non-vide contenant un message d'erreur si la transition n'a pas pu être réalisée.
13.6.3.34.4 Erreurs / Exceptions
La méthode retourne un message d'erreur si :
- L'état
newstatedemandé est vide ; - Le document n'a pas de cycle de vie ;
- Le cycle de vie associé au document n'existe pas ;
- Le cycle de vie associé au document est corrompu (ex. syntaxe PHP invalide) ;
- L'état
newstatede destination n'existe pas ou n'est pas associé à une transition valide et queforceest àfalse; - L'état
newstatede destination n'existe pas ou n'est pas associé à une transition valide et que l'utilisateur n'est pas le super-utilisateuradmin; -
wm0est àtrueet la méthodem0n'existe pas ; -
wm0est àtrueet l'exécution de la méthodem0à retournée un message d'erreur ; -
wm1est àtrueet la méthodem1n'existe pas ; -
wm1est àtrueet l'exécution de la méthodem1à retournée un message d'erreur ; -
wneedest àtrueet le contrôle des attributs obligatoire à retourné un message d'erreur (ex. des attributs obligatoires ne sont pas remplis) ; - La revision ou l'inscription du document en base de données ont retourné un message d'erreur ;
-
wm2est àtrueet la méthodem2n'existe pas ; -
wm3est àtrueet la méthodem3n'existe pas ; - Le changement d'affectation du document déclaré sur le cycle à retourné un message d'erreur.
13.6.3.34.5 Historique
Aucun.
13.6.3.34.6 Exemples
- Exemple #1
/* * Mettre la facture dans l'état Archivé */ $err = $facture->setState('ST_ARCHIVED'); if ($err != '') { throw new Exception( sprintf("La facture n'a pu être archivée: %s", $err) ); }
13.6.3.34.7 Notes
Pour qu'il y ait changement d'état, il faut que l'état newstate de destination
demandé ait une transition valide depuis l'état de départ actuel du document.
S'il n'y a pas de transitons entre l'état de départ actuel du document et le
nouvel état newstate demandé, alors une erreur est remontée.
Dans ce cas, si vous voulez quand même mettre le document dans l'état
newstate, alors il faut utiliser le paramètre force avec la valeur true.