Cálculos automáticos basados en nodos actualizados
Si quiere crear un cálculo automático que use un nodo actualizado por otro cálculo automático, tiene dos opciones:
•Crear ambos cálculos automáticos en la misma plantilla.
•Crear cada cálculo automático en una plantilla diferente.
Cálculos automáticos en la misma plantilla
Cuando dos cálculos automáticos están en la misma plantilla, el diseño SPS sigue este procedimiento:
1.Se modifica un nodo utilizado en la expresión XPath del cálculo automático.
2.Se leen todos los valores de los nodos del documento XML y se ejecutan todos los cálculos automáticos.
3.Suponiendo que el primer cálculo automático se ejecute correctamente, el nodo XML especificado se actualiza (llamémosle Nodo-A). El segundo cálculo automático (basado en el Nodo-A) se ejecuta pero usa el valor del Nodo-A antes de que el nodo se actualice. Esto se debe a que el SPS lee el valor del Nodo-A antes de que este se actualice.
4.Si a partir de este momento se edita el documento XML o si se cambia de vista (de la vista Authentic a otra vista previa), entonces los valores de los nodos se vuelven a leer y los cálculos automáticos se ejecutan.
5.Ahora se lleva a cabo el segundo cálculo automático. Si el objetivo de este cálculo automático es actualizar otro nodo más, deberá cambiar uno de los nodos utilizados en la expresión XPath para que dicha actualización pueda producirse.
El intervalo temporal entre la actualización del Nodo-A y la evaluación del segundo cálculo automático con el valor actualizado del Nodo-A puede confundir al usuario de la vista Authentic. Por ello es mejor que la expresión XPath del segundo cálculo automático contenga la expresión XPath del primer cálculo automático (en lugar del nodo actualizado). Como resultado el segundo cálculo automático se ejecutará con los datos de entrada del primer cálculo automático y llevará a cabo el cálculo automático como parte de su propio cálculo automático. De este modo el cálculo automático se evalúa independientemente del contenido del Nodo-A.
Ejemplo
El primer cálculo automático calcula el importe del IVA de un producto usando los nodos de (i) precio neto y (ii) tasa de IVA. Después actualiza el nodo que contiene el importe del IVA. El segundo cálculo automático calcula el producto bruto (precio neto + IVA) y después actualiza el nodo que contiene el precio bruto.
•El cálculo automático necesario para calcular el IVA del producto sería: NetPrice * VATRate div 100. Cuando se introduce la tasa de IVA del producto, el cálculo automático se ejecuta y actualiza el nodo VATAmount.
•Si el cálculo automático para calcular el precio bruto es: NetPrice + VATAmount, entonces el cálculo automático se ejecutará con el valor de VATAmount que se leyó antes de que VATAmount se actualizara.
•Si, por el contrario, el cálculo automático para calcular el precio bruto fuera: NetPrice + (NetPrice * VATRate div 100), entonces el cálculo automático se ejecutará con el valor de VATRate y acutalizará el nodo GrossPrice. El nodo actualizado VatAmount no se incluyó en el segundo cálculo automático.
Para ver un ejemplo concreto consulte el apartado Ejemplo: una factura.
Cálculos automáticos en plantillas diferentes
Si los cálculos automáticos están en plantillas diferentes, el nodo actualizado por el primer cálculo automático se puede usar en el segundo cálculo automático. Esto se debe a que los cálculos automáticos y los nodos se ejecutan/actualizan por separado en cada plantilla. Para ver un ejemplo concreto consulte el apartado Ejemplo: una factura.