Beispiel: Eine Rechnung

www.altova.com Alle erweitern/reduzieren Dieses Kapitel drucken Vorherige Seite Eine Ebene nach oben Nächste Seite

Startseite >  SPS-Datei: Komplexe Funktionen > Automatische Berechnungen >

Beispiel: Eine Rechnung

Anhand des Beispiels SimpleInvoice.sps im Ordner (Eigene) Dateien, C:\Documents and Settings\<username>\My Documents\Altova\StyleVision2019\StyleVisionExamples/Tutorials/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
Erstellen komplexer Berechnungen

 

In der Beispieldatei wurden die automatischen Berechnungen mit einer gelben Hintergrundfarbe markiert (siehe Abbildung unten).

 

Zählen von Nodes

Im Beispiel "SimpleInvoice" 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).

 

TutAutoCal_Invoices_1

 

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 "SimpleInvoice" 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. Beachten  Sie, dass der Mehrwersteuerwert von unterschiedlichen Produkten unterschiedlich ist (Book=10%; CD=15%; DVD=15%; Electronics=20%). Sie wurden mittels der automatischen Berechnung berechnet.

 

Erstellen einer komplexen 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. Es ist in keinem Node enthalten. Da dieser Wert nicht direkt aus einem Node abgerufen werden kann, muss er in der Berechnung des  Bruttopreises neu berechnet werden. Der XPath-Ausdruck dafür würde lauten:

 

for $i in Category return PriceNet + (PriceNet *(/Invoice/Categories/Category[. = $i]/@rate) div 100)

 

Der XPath-Ausdruck kann im Fenter "Eigenschaften" angezeigt und bearbeitet werden. Sie können die automatische Berechnung für den Bruttopreis testen, indem Sie in der XML-Datei entweder den Preis oder die Produktkategorie eines beliebigen Produkts ändern und das SPS anschließend neu laden. Beachten Sie, dass sich auch der Bruttopreis (Preis inkl. Mwst) des Produkts ändert.

 

TutAutoCal_Invoices_3Std

 

 

 


© 2019 Altova GmbH