Beispiel: Eine Rechnung
Anhand des Beispiels Invoice.sps im Ordner (Eigene) Dateien, C:\Documents and Settings\<username>\My Documents\Altova\StyleVision2025\StyleVisionExamples\Tutorial\Auto-Calculations\ wird demonstriert, wie automatische Berechnungen für die folgenden Zwecke verwendet werden können.
•Zählen von Nodes
•Auswahl eines Node auf Basis einer Eingabe des Benutzers in der Authentic-Ansicht
•Aktualisieren des Inhalts eines Node mit dem Ergebnis einer automatischen Berechnung
•Verwendung des Ergebnisses der automatischen Berechnung in einer anderen automatischen Berechnung
In der Beispieldatei wurden die automatischen Berechnungen mit einer gelben Hintergrundfarbe markiert (siehe Abbildung unten).
Zählen von Nodes
Im Beispiel "Rechnung" ist jedes Produkt in der Liste nach seiner Position in der Liste der Produkte nummeriert, die ein Kunde bestellt hat (Product 1, Product 2, usw.). Diese Nummerierung wird mit Hilfe einer automatischen Berechnung erstellt (Abbildung unten).
In diesem speziellen Fall genügt der XPath-Ausdruck position() um eine korrekte Nummerierung zu erhalten. Eine andere nützliche Methode zur Ermittlung der Position eines Node ist, die Anzahl der vorhergehenden gleichrangigen Elemente zu zählen und die Zahl Eins dazu zu addieren. Der XPath-Ausdruck dafür würde lauten: count(preceding-sibling::Product)+1. Die zweite Methode würde sich in solchen Fällen als nützlich erweisen, in denen die position() Funktion nur schwer oder gar nicht verwendet werden kann. Sie können diese automatische Berechnung in der Beispieldatei testen, indem Sie Produkte löschen und/oder neue Produkte hinzufügen und löschen.
Auswahl eines Node auf Basis einer Benutzereingabe
Im Beispiel "Rechnung" wählt der Benutzer die Produktkategorie (Book, CD, DVD oder Electronics) über eine Auswahlliste aus. Diese Auswahl wird in den Node //Product/Category node im XML-Dokument eingegeben. Bei der automatischen Berechnung wird anhand dieses Werts eine "Nachschlagetabelle" im XML-Dokument referenziert und der Node, der den Mwst. Prozentsatz für diese Produktkategorie enthält, identifiziert. Der XPath-Ausdruck für diese automatische Berechnung lautet:
for $i in Category return /Invoice/Categories/Category[. = $i]/@rate.
Der Mehrwertsteuersatz wird in der Ausgabedatei an der Stelle angezeigt, an der die automatische Berechnung eingefügt wurde. Im Beispiel "Rechnung" ist die Nachschlagetabelle im selben XML-Dokument wie die Rechnungsdaten gespeichert. Eine solche Tabelle kann aber auch in einem separaten Dokument gespeichert werden. In diesem Fall würde sie mit Hilfe der doc() Funktion von XPath 2.0 aufgerufen. Um diese automatische Berechnung zu testen, ändern Sie die ausgewählte Produktart in der Auswahlliste einer beliebigen Produktkategorie; der Mehrwertsteuerwert ändert sich entsprechend (Book=10%; CD=15%; DVD=15%; Electronics=20%).
Aktualisieren eines Node-Inhalts mit dem Ergebnis einer automatischen Berechnung
Der durch die automatische Berechnung anhand der Nachschlagetabelle ermittelte Mehrwertsteuersatz ist dynamisch und wird temporär (für die Verwendung in der Authentic-Ansicht) im Arbeitsspeicher gespeichert. Das Ergebnis der automatischen Berechnung kann jedoch im VAT Node im XML-Dokument gespeichert werden. Dies hat zwei Vorteile: (i) Der Inhalt des VAT Node muss nicht vom Benutzer eingegeben werden, sondern wird automatisch mittels der automatischen Berechnung eingefügt; (ii) Jedes Mal, wenn die Nachschlagetabelle geändert wird, werden die Änderungen im VAT Node übernommen, wenn das Dokument Invoice.xml in Authentic geöffnet wird. Damit ein Node mittels einer automatischen Berechnung aktualisiert wird, wählen Sie die automatische Berechnung in der Design-Ansicht und klicken Sie im Fenster "Eigenschaften" (Abbildung unten) auf die Schaltfläche Authentic | XML-Node in Authentic aktualisieren. Wählen Sie im Dialogfeld, das daraufhin angezeigt wird, den VAT Node aus und klicken Sie auf OK.
Wenn der Benutzer in der Authentic-Ansicht in der Auswahlliste eine andere Produktkategorie auswählt, ermittelt die automatische Berechnung den Mehrwertsteuersatz durch Referenzierung der Nachschlagetabelle, zeigt den Mehrwertsteuersatz an und aktualisiert den VAT Node.
Verwendung eines durch eine automatische Berechnung aktualisierten Node in einer anderen automatischen Berechnung
Der durch die oben beschriebene automatische Berechnung ermittelte Mehrwertsteuersatz wird benötigt, um den Bruttopreis (Nettopreis + Mwst.) der einzelnen Produkte zu ermitteln. Die Formel, die hierfür benötigt wird, würde folgendermaßen abgeleitet werden:
Bruttopreis = Nettopreis + Mwst-Betrag
Da Mwst-Bestrag = Nettopreis * Mwstsatz div 100
Bruttopreis = Nettopreis + (Nettopreis * Mwst-Betrag div 100)
Der Nettopreis eines Produkts wird aus dem Node PriceNet abgerufen. Der Mehrwertsteuersatz wird mittels der oben beschriebenen automatischen Berechnung ermittelt. Mit dieser automatischen Berechnung wird der VAT Node (Mwst-Node) aktualisiert. Der Inhalt des VAT Node kann nun in einer automatischen Berechnung verwendet werden, um den Bruttopreis zu berechnen. Der XPath-Ausdruck dafür würde lauten:
PriceNet + (PriceNet * (VAT div 100))
Der XPath-Ausdruck kann im Fenster "Eigenschaften" angezeigt und bearbeitet werden. Sie können die automatische Berechnung für den Bruttopreis testen, indem Sie entweder den Preis oder die Produktkategorie eines beliebigen Produkts ändern. Beachten Sie, dass sich auch der Bruttopreis (Preis inkl. Mwst) des Produkts ändert.
Im Invoice-SPS aktualisiert die Bruttopreisberechnung den Node PriceGross im XML-Dokument.
Die aktualisierten PriceGross Nodes können nun in einer automatischen Berechnung verwendet werden, in der die Preise aller erworbenen Produkte summiert werden. Der XPath-Ausdruck dafür würde lauten: sum(Order/Product/PriceGross). Im Invoice-SPS aktualisiert diese automatische Berechnung den Node PriceTotal. Sie können diese automatische Berechnung testen, indem Sie die Preise der Einzelprodukte ändern und überprüfen, wie sich das auf den Gesamtpreis auswirkt.
Eine Übung zur automatischen Berechnung
Fügen Sie nun selbst zwei automatische Berechnungs-Komponenten zum SPS hinzu.
1.Erstellen Sie eine automatische Berechnung, mit der ein Mengenrabatt für die gesamte Rechnung berechnet wird. Wenn der Betrag der Bestellung (price total) 100 Euro, 300 Euro bzw. 600 Euro übersteigt, wird ein Rabatt von 5%, 10% bzw. 12% eingeräumt. Zeigen Sie den Rabattbetrag an (siehe Abbildung unten) und aktualisieren Sie den Node DiscountAmount im XML-Dokument.
2.Erstellen Sie eine automatische Berechnung, mit der der ermäßigte Rechnungsbetrag ermittelt wird. Der Betrag wäre der Gesamtpreis minus den (in der vorherigen automatischen Berechnung ermittelten) Rabattbetrag. Zeigen Sie den Rechnungsbetrag an (siehe Abbildung unten) und aktualisieren Sie den Node BillAmount im XML-Dokument.
Richten Sie diese Komponenten so ein, dass sie in der Authentic-Ansicht, wie in der Abbildung unten gezeigt werden.
Sie finden diese beiden zusätzlichen Berechnungen in der Datei InvoiceWithDiscounts.sps, die sich im Ordner (Eigene) Dateien, C:\Documents and Settings\<username>\My Documents\Altova\StyleVision2025\StyleVisionExamples\Tutorial\Auto-Calculations befindet.