Calculs automatiques basés sur les nœuds mis à jour
Si vous souhaitez créer un calcul automatique (deuxième calcul automatique) qui utilise un nœud mis à jour par un autre calcul automatique (premier calcul automatique), il existe deux situations possibles :
•Les deux calculs automatiques sont dans le même modèle.
•Les deux calculs automatiques sont dans différents modèle.
Calculs automatiques dans le même modèle
Lorsque les deux calculs automatiques sont dans le même modèle, le SPS applique la procédure suivante :
1.Un nœud utilisé dans l'expression XPath du premier calcul automatique est modifié.
2.Toutes les valeurs de nœud dans le document XML sont lues et les calculs automatiques sont exécutés.
3.En partant du fait que le premier calcul automatique est exécuté correctement, il met à jour le nœud XML précisé (appelons-le Node-A). Le deuxième calcul automatique, qui est basé sur le Node-A, sera exécuté mais utilisera la valeur de Node-A avant de mettre à jour Node-A. Ceci est dû au fait que la valeur du Node-A a été lue avant d’être mise à jour, et n’a pas été lue depuis.
4.Si le document est édité maintenant ou si des aperçus du document sont modifiés (depuis et vers Authentic View), alors les valeurs de nœud sont nouvellement lues et exécutées.
5.Le deuxième calcul automatique est désormais exécuté. (Si ce calcul automatique est prévu pour mettre à jour un nœud, alors, tel qu’il est usuel pour les mises à jour de nœuds, un nœud utilisé dans l’expression XPath sera cahngé avant que la mise à jour n’ait lieu.)
Le décalage entre la mise en œuvre du Node-A et l’évaluation du deuxième calcul automatique avec la valeur mise à jour du Node-A pourrait irriter l’utilisateur de Authentic View. Pour assurer que la situation ne se produit pas, c'est le mieux que l’expression XPath du deuxième calcul automatique contient l’expression XPath du premier calcul automatique —pas le nœud mis à jour lui-même. En guise de résultat, le deuxième calcul automatique sera exécuté avec l’entrée du premier calcul automatique et exécutera ce calcul automatique comme faisant partie de son propre calcul automatique. Ceci permet de l’évaluer de manière indépendante des contenus de Node-A.
Exemple
Le premier calcul automatique calcule le montant T.V.A. d’un produit qui utilise les nœuds pour (i) le prix net, et (ii) le taux T.V.A. ; il met à jour le nœud du montant T.V.A. Le deuxième calcul automatique calcule le prix brut, qui est la somme du prix net et du montant T.V.A. ; il met à jour le nœud du prix brut.
•Le calcul automatique pour calculer le montant T.V.A. est : NetPrice * VATRate div 100. Quand le taux de T.V.A. du produit est saisi, les calculs automatiques sont exécutés et mettent à jour le nœud VATAmount.
•Si le calcul automatique pour calculer le prix brut est : NetPrice + VATAmount, alors le calcul automatique sera exécuté avec la valeur de VATAmount qui a été lue avant que VATAmount n’ait été mis jour.
•Si, toutefois, le calcul automatique pour calculer le prix brut est : NetPrice + (NetPrice * VATRate div 100), alors le calcul automatique sera exécuté avec la valeur de VATRate et mettra à jour le nœud GrossPrice. Le nœud VatAmount a été écarté du deuxième calcul automatique.
Pour un exemple détaillé, voir l’ : Un Invoice.
Les calculs automatiques dans différents modèles
Lorsque deux calculs automatiques se trouvent dans différents modèles, un nœud mis à jour par le premier calcul automatique peut être utilisé par le deuxième calcul automatique. Ceci est dû au fait que les calculs automatiques sont calculés et les nœuds mis à jour pour chaque modèle séparément. Pour un exemple de la manière de procéder, voir : Un Invoice.