Variablen sind Eingabe- bzw. Rechenfelder in der Belegerfassung. Hier können Werte entweder manuell eingegeben oder Rechenergebnisse durchgeführt und zwischengespeichert werden. Des Weiteren kann das Programmverhalten über diverse Invoicing-Objekte beeinflusst werden.
Achtung
Einige Invoicing-Objekte sind (in den meisten Fällen) nicht optional, d.h. es wird im Formeltext nach deren Vorkommen geschaut (auch im auskommentierten Bereich beim Laden von bestehenden Belegen) und entsprechend verfahren. Folgende Objekte sind davon betroffen:
ü RefreshValues
ü CalcTotal
ü DifferentTotal
ü KeepPriceOnDeliveryChange
ü MainProductEntry
ü ExtensionSaved
ü FormulaOnChange
ü FormulaInMacro
Ø Weight
Gewicht, wird im Artikelstamm im Fenster "TEXT" eingetragen
Ø Volume
Variable "Raumgewicht" aus dem Text-Fenster des Artikelstammes
Ø Packaging
Variable "Verpackung" aus dem Text-Fenster des Artikelstammes
Ø StorageLocation
Variable "Lagerort" aus dem Text-Fenster des Artikelstammes
Ø CostOfGoods
Allg. EK-Preis - aus dem Preise-Fenster des Artikelstammes
Ø CostOfGoodsSold
Aktueller Einstandspreis aus dem Artikelstamm
Ø InventoryLevel
Lagerstand aus dem Artikelstamm
Ø SalesUnit
Verpackungseinheit aus dem Artikelstamm (Colli) (Fenster Preise)
Ø LotSize
Losgröße aus dem Artikelstamm (Fenster Lager)
Ø SalesPrice1 bis 8
Sofern im Artikel Preislisten mit der Nummer 1 bis Nummer 8 angelegt wurden, werden die allg. Preislistenpreise dieser Preislisten in die Variablen VK1 bis VK8 kopiert, damit auf diese Preise in der Formel zugegriffen werden kann.
Ø Quantity
Eingabefeld in der Belegerfassung. Die Zahl der Nachkommastellen ist abhängig von der Artikelgruppe. Das Feld Menge wird zur Errechnung des Feldes Gesamt benötigt. Ist der Wert im Feld Menge 0, unterbleibt die standardmäßige Berechnung des Feldes Gesamt (Gesamt = Menge * Preis - Zeilenrabatte). In diesem Fall ist in der Formel für die Beschickung des Feldes Gesamt zu sorgen.
Ø Price
Eingabefeld für den Einzelpreis in der Belegerfassung. Wird der Preis nicht durch die Formel beschickt, kommt die Standardpreisautomatik zum Tragen. Je nach Organisation werden Netto-/Bruttopreise, Preislisten, individuelle Preise abgearbeitet.
Ø Total
Gesamtpreis der Artikelzeile im Belegerfassen
Achtung
Wenn der Gesamtwert in der Zeile über eine Formel errechnet werden soll, muss entweder die Menge oder der Einzelpreis in der Formel auf ="0" gesetzt werden, da sonst am Ende wieder die im Programm vorhandene Automatik "Menge * Preis = Gesamt" greift und die Berechnung der Formel übersteuert.
Ø Discount1 / Discount2
Zeilenrabatt 1 und 2 in der Belegzeile. Wird üblicherweise über die Rabattmatrix oder / und die Preislisten gesteuert. Kann durch die Formel beschickt werden. Wird das Feld nicht durch die Formel beschickt, kommt die Standardberechnung zum Tragen, das Feld wird dann in Abhängigkeit von Kunden/Artikelrelation, Mengenstaffeln, individuellen Vereinbarungen (Beleg Preise) beschickt.
Ø Factor1 bis 3
Frei verwendbare und andruckbare Speichervariablen in der Belegzeile (z.B. um das Fassungsvermögen eines Kanisters einzugeben, in der Formel mit der verkauften Menge zu multiplizieren und diese Werte im Beleg neben dem Preis pro Flüssigkeitseinheit auch andrucken zu können). Diese Speichervars gelten nur innerhalb jeweils einer Belegzeile.
Hinweis
Weitere Informationen und Hinweise können dem Kapitel Wann werden die Faktoren bzw. Speicher gefüllt und gelöscht? entnommen werden
Ø PackagingMatTotal
Summe der Packstoffarten, die aufgrund der in den Artikeln hinterlegten Collis und der darin gespeicherten Packstoffarten mit dem dazugehörigen Lizenzentgelt im Beleg automatisch aufgerechnet wird und damit im Beleg für den Andruck oder die Weiterberechnung zur Verfügung steht.
Ø DeliveryCosts
Bezugskosten - können entweder über den Prozentsatz in der Artikelgruppe oder über die Betragsvorgabe im Artikel-Lager-Tab oder auch einfach nur manuell in der Belegzeile vorgegeben werden.
Ø Commisioncode
Provisionscode in der Belegzeile. Üblicherweise wird der Provisionscode aus dem Artikelstamm (Fenster Preise) oder über die Preislisten in der Belegzeile gesteuert.
Ø CalcTotal
Wenn diese Funktion aufgerufen wird, wird der Gesamtwert immer aus Menge * Preis - Rabatt errechnet, auch wenn der Preis oder die Menge 0 sind.
Ø RefreshValues
Wenn diese Funktion aufgerufen wird, wird beim Ändern der Menge die Zeilenformel automatisch und nicht erst nach Druck der F9-Taste angestoßen.
Ø DifferentTotal
Wenn diese Funktion aufgerufen wird, wird der Gesamtwert nie aus Menge * Preis - Rabatt errechnet, sondern muss in der Formel belegt werden.
Hinweis
Die Funktion muss am Ende der Formel stehen!
Ø PriceFromFormula
Wenn diese Funktion in der Formel vorhanden ist, dann wird bei einer Änderung von Menge 0 auf Menge <> 0 keine Preisfindung durchgeführt.
Ø KeepPriceOnDeliveryChange
Wurde in der Belegart (Register "Ausdruck") im Bereich "Preisliste - Datum" die Einstellung "1 - Lieferdatum" hinterlegt, so wird automatisch bei Änderung des Lieferdatums in der Belegzeile eine neue Preisfindung durchgeführt. Ist dieses nicht gewünscht so kann dieses mit einer Zeilenformel und der Funktion "KeepPriceOnDeliveryChange" unterbunden werden.
Ø ExtensionSaved
Durch diese Funktion wird die Zeilenformel auch beim Hauptartikel ausgeführt, wenn der Button "Ok" im Ausprägungsfenster gedrückt wird.
Hinweis
Die Funktion "ExtensionSaved" ist nicht "optional", d.h. wenn irgendwo in der Formel die Funktion vorhanden ist (es wird auch der auskommentierte Bereich beim Laden von bestehenden Belegen kontrolliert), dann wird entsprechend verfahren. Eine Hinterlegung innerhalb einer "If / Then"-Anweisung wird somit nicht unterstützt. Des Weiteren sind die Mengenvariablen des Hauptartikels an sich zu diesem Zeitpunkt (Button "Ok" im Ausprägungsfenster) noch nicht gesetzt, können aber über die Variablen Value (0,212) für Menge1 und Value (0,256) für Menge2 abgefragt (nicht gesetzt!) werden.
Ø MainProductEntry
Wenn diese Funktion in der Formel vorhanden ist, so wird die Zeilenformel bereits beim Öffnen des Ausprägungsfensters für den Hauptartikel ausgeführt.
Hinweis
Die Funktion "ExtensionSaved" ist nicht "optional", d.h. wenn irgendwo in der Formel die Funktion vorhanden ist (es wird auch der auskommentierte Bereich beim Laden von bestehenden Belegen kontrolliert), dann wird entsprechend verfahren. Eine Hinterlegung innerhalb einer "If / Then"-Anweisung wird somit nicht unterstützt.
Ø FormulaOnChange
Mit Hilfe der Funktion "FormulaOnChange" ist es möglich eine Zeilenformel beim Ändern des Wertes einer Spalte erneut auszuführen. Dafür wird die Funktion "FormulaOnChange(x)" für jede benötigte Spalte in die Formel einzeln eingefügt. Der Parameter "x" steht hierbei für die physikalische Spalte aus der Belegmitte (T026).
Hinweis 1
Die Funktion "FormulaOnChange" ist nicht "optional" verwendbar. D. h. eine Hinterlegung z. B. innerhalb einer "If /Then"-Anweisung wird somit nicht unterstützt, denn egal in welchem Bereich der Formel der Funktionsaufruf stattfindet, wird diese ausgeführt. Der Funktionsaufruf darf zudem nicht auskommentiert werden, da er sonst beim Laden eines bestehenden Beleges trotzdem verwendet wird.
Hinweis 2
Für die Batcherfassung von Belegen wird FormulaOnChange nicht unterstützt. Der Formelaufruf kann über einen mesonic.ini-Eintrag gesteuert werden.
Beispiel
In der Formel wird am Anfang Invoicing.RefreshValues eingefügt und in der mesonic.ini-Datei wird folgender Eintrag hinzugefügt:
[RefreshValues]
Var007=1
Var021=1
Var022=1
Dieser Eintrag bewirkt, dass die Zeilenformel immer beim Verlassen/Bestätigen des Feldes Einzelpreis (C007), Rabatt 1 (C021) und Rabatt 2 (C022) ausgeführt wird.
Ø FormulaInMacro
Wird ein Artikel per Makro-Funktion in die Belegerfassung eingefügt, so wird seine Zeilenformel immer nur 1x ausgeführt (nach dem Einfügen des Artikels, noch vor dem Setzen der Menge). Hierbei ist es irrelevant, ob mit den Funktionen "RefreshValues" und / oder "FormulaOnChange" gearbeitet wird.
Sollte die Ausführung der Zeilenformel auch nach dem Setzen der Menge benötigt werden, so muss die Funktion "FormularInMacro" hinterlegt werden. Zusätzlich muss eine der folgenden Funktionen ebenfalls enthalten ein:
ü RefreshValues
ü FormulaOnChange (5) => bei Angeboten und Aufträgen
ü FormulaOnChange (6) => bei Lieferscheinen und Rechnungen
Beispiel
In der Belegerfassung wird der Typ "2 - Makro" gewählt oder ein Artikel erfasst, in welchem lt. Stammdaten ein Makro hinterlegt ist. Mit Hilfe der Funktion wird die Zeilenformel nach dem Einfügen des bzw. der Artikel ausgeführt und auch, wenn sich bei den Artikeln eine Mengenänderung ergibt.
Ø Sonstige Vars
Auf alle anderen Variablen kann mit der Funktion Value (Syntax "Value (0,151)") bzw. NumValue (Syntax "NumValue(0,97)") zugegriffen werden.
Hinweis
Viele Programmvariablen (0,xxx) können gelesen und geschrieben werden. Ausnahme hiervon wäre z.B. "Interne Zeilennummer", welche von der WinLine immer selbst vergeben wird.
Beispiel
Quantity = Value (0,192)
Value (0,151) = "1"
Alle anderen Variablen, z.B. Value (21,201) können nur gelesen werden.
Ø CompanyConstant(1) - (10)
Hier kann auf die 10 Firmenkonstanten zugegriffen werden, welche im Programm "Firmenkonstante" (WinLine START - Parameter - Firmenkonstante) hinterlegt werden können.
Ø Storage(1) bis Storage(100)
Diese Speicher können mittels Formeln befüllt und zu späteren Zeitpunkten wieder abgeholt werden.
Achtung
Die Speicher1 bis Speicher10 werden immer pro Belegzeile initialisiert, wodurch die Verwendung in einer Zeilenformel in der Regel ausscheidet. Weitere Informationen und Hinweise können dem Kapitel Wann werden die Faktoren bzw. Speicher gefüllt und gelöscht? entnommen werden.
Operatoren
Operatoren dienen der Verknüpfung und dem Vergleich von Variablen und Konstanten.
Ø Grundrechnungsarten
Zu den Grundrechnungsarten zählen folgende Operatoren:
ü +
ü -
ü /
ü *
Hinweis
Die Regel Punktrechnung vor Strichrechnung kommt nicht zur Anwendung. Die Operatoren werden in der Reihenfolge abgearbeitet. Die Änderung der Reihenfolge muss durch Klammerung erfolgen.
Ø Logische Operatoren
Folgende logische Vergleichsoperatoren stehen zur Verfügung:
ü < (kleiner)
ü <= (kleiner gleich)
ü > (größer)
ü >= (größer gleich)
ü = (ist gleich)
ü <> (ungleich)