Druck-Konfiguration

Die Zuordnung, wann und wo Formulare in der Faktura gedruckt werden, wird in diesem Dokument beschrieben.

Konfigurationsdatei

In der Freeware-Faktura werden alle Einstellungen in XML-Dateien gespeichert.

Für die Konfiguration und Zuordnung der Druckvorgänge zu Formularen wird die Datei Default.PrintSettings.xml verwendet. Sie finden diese Datei im Verzeichnis <Profilverzeichnis>/conf/

Falls im Konfigurations-Verzeichnis die Datei <Programmname>.PrintSettings.xml (also z.B. Faktura.PrintSettings.xml) existiert, so wird diese Datei vom Programm verwendet.

Zuordnung

Grundsätzlich wird in der Faktura einem Objekt (z.B. einer Rechnung oder einem Kunden) ein Formular zugeordnet, um das Objekt zu drucken.

Jedem Objekt können mehrere verschiedene Formulare zugeordnet werden. Dies kann auch anhängig von verschiedenen Eigenschaften des Objektes erfolgen. So kann z.B. für Kontakte aus der Kategorie “Kunden” ein anderes Formular verwendet werden als für Kontakte aus der Kategorie “Lieferanten”.

Wenn einem Objekt mehrere Formulare zugeordnet sind, wird dies in der Anwendung an der Drucken-Schaltfläche sichtbar: Rechts neben der Schaltfläche befindet sich dann ein kleiner Pfeil. Beim Klicken auf den Pfeil wird eine Auswahl aller verfügbaren Formulare angezeigt.

Alle Zuordnungsinformation erfolgen in der Konfigurationsdatei Faktura.PrintSettings.xml

Aufbau der XML-Datei

Das Wurzelelment der Konfigurationsdatei heißt ,,printSettings” und enthält folgende Unterelemente:

Formularzuordnung zu Objekten

Die XML-Elemente object repräsentieren einen zu druckenden Objekt-Typ (Klasse). Damit festgelegt ist, welches object-Element welchem Objekt-Typ der Faktura zugeordnet werden soll, muss das Attribut class angegeben werden.

Beispiel:

 <object class="BusinessObjects.Order">
     (...)
 </object>

Folgende Klassen kennt die Faktura:

Bevor die Formulare einem Objekt-Typ zugeordnet werden, erfolgt noch die Unterteilung in sog. jobs.

Ein job entspricht einem Druckauftrag.

Innerhalb eines job werden die Formulare zugeodnet. Hierfür existiert das XML-Element template mit dem dazugehörigen Unterelement filename.

Somit ergibt sich beispielsweise folgende XML-Struktur für die Druckkonfiguration:

 <object class="BusinessObjects.Order">
     <job name="Angezeigter Name im Druck-Button" >
         <template>
             <filename>
                 [Pfad zur Formulardatei (XML-Dokument)]
             </filename>
         </template>
     </job>
 </object>

Das job-Element kann beliebig oft innerhalb eines object-Element vorkommen. Auf diese Art werden verschiedene Druckvarianten angeboten (z.B. für einen Netto-Auftrag und einen Brutto-Auftrag).

Damit der Benutzer diese job im Programm voneinander unterscheiden kann, existiert das Attribut name, in dem ein zum Druckauftrag passender Name definiert wird.

Falls mehrere job-Elemente existieren, kann durch das Attribut default definiert werden, welches job-Element den Standard-Druckauftrag repräsentiert.

Im folgenden Beispiel wird der Druckauftrag ,,Brutto” zum Standard-Druckauftrag, indem der Attributwert ,,yes” im default Attribut angegeben wird.

 <object class="BusinessObjects.Order">
     <job name="Brutto" default="yes">
         (...)
     </job>
     <job name="Netto" default="no">
         (...)
     </job>
 </object>

Innerhalb vom job-Element folgt mindestens ein template-Element. Das template-Element wieder muss genau ein filename-Element enthalten, in dem der Pfad zur Formulardatei angegeben wird.

Das Beispiel unten verwendet die Platzhalter {rep} und {reportset} in der Pfadangabe. Der Platzhalter {rep} wird ersetzt durch den Verzeichnisnamen in dem sich die XML-Formulardateien befinden. Dieses Verzeichnis befindet sich im Profilverzeichnis. Beispiel: C:\Users\Tester\Faktura\profiles\default\rep

Im nächsten Abschnitt werden die Platzhalter genauer beschrieben.

 <object class="BusinessObjects.Order">
     <job default="no" name="Brutto-Rechnung">
         <template>
             <filename>{rep}/{reportset}/Order.BusinessObject.Brutto.xml</filename>
         </template>
     </job>
 </object>

Im Beispiel oben wird die Datei Order.BusinessObject.Brutto.xml verwendet, um Rechnungen, Aufträge, Angebote etc. auszudrucken (Der Objekt-Typ BusinessObjects.Order wird für Rechnungen ebenso wie für Aufträge, Angebote verwendet).

Platzhalter für Pfadangaben

Damit die Formulardateien vom Programm gefunden werden können, egal wo sich das aktuelle Profil befindet und auch, wenn sich der Pfad zu einem Profil geändert haben sollte, gibt es Platzhalter für Pfadangaben.

Es gibt ein spezielles Formular-Set mit dem Namen Common. Darin befinden sich alle Formulare, die in der Druck-Konfiguration den unterschiedlichen Ausdrucken zugeordnet werden. Das Programm sucht ein Formular in diesem Formular-Set, falls es das aktuell benötigte Formular im ausgewählten Formular-Set (siehe Mandantendaten) nicht finden konnte.

Wenn Beispielweise die Druck-Konfiguration auf das Formular {rep}/{reportset}/Order.BusinessObject.Brutto.xml verweist, und in den Mandantendaten das Formular-Set ,,Faktura.Schmal” ausgewählt ist, dann wird das Formular zuerst im Verzeichnis C:\Programme\Faktura\profiles\default\rep\Faktura.Schmal\ gesucht. Wenn das Formular dort nicht gefunden wird, dann sucht das Programm die Formular-Datei im Verzeichnis C:\Programme\Faktura\profiles\default\rep\Common.

Somit muss ein Formular-Set nur die Formulare enthalten, die für eine andere Darstellung angepasst wurden. Alle sonstigen Formulare, die unverändert dargestellt werden sollen, findet das Programm automatisch im Formular-Set Common.

Unterschiedliche Formulare für Rechnungen und Aufträge etc.

Wie oben beschrieben, wird im Programm für Rechnungen und Aufträge (und weitere Dokumentarten wie z.B. dem Lieferschein) der gleiche Objekt-Typ verwendet: BusinessObjects.Order Um für eine Rechnung ein anderes Formular verwenden zu können als für einen Auftrag, muss eine weitere Unterscheidung getroffen werden.

Die Unterscheidung der verschiedenen Auftragsarten erfolgt über das Attribut filter. Im Attributwert wird angegeben, welche Objekt-Eigenschaft welchen Wert haben muss.

 <object class="BusinessObjects.Order" filter="{TypeId} = 4">
     (...)
 </object>

Im Beispiel oben wird der filter {TypeId} = 4 angegeben. {TypeId} ist die Objekteigenschaft, auf die sich der Filter bezieht und die Zahl 4 ist der Wert, den die Objekteigenschaft haben muss. Als Objekteigenschaft kommt auch jede andere Eigenschaft in Frage, die ein Objekt ausweist. Wenn Sie wissen wollen, welche Eigenschaften der Objekt-Typ BusinessObjects.Order kennt, öffnen Sie einfach eine beliebige Rechnung und klicken im Menü ,,Datei” auf das Untermenüelement ,,Objekt-Inspektor”.

Die Eigenschaft {TypeId} ist die geeignete Eigenschaft, um zwischen den Auftragsarten zu unterscheiden. Der Wert ist immer eine Ganzzahl. Folgende Zahlen stehen für folgende Auftragsarten:

    1 = Angebot
    2 = Auftrag
    3 = Rechnung
    4 = Gutschrift
    5 = Bestellung
    6 = Lieferschein
    7 = Mahnung

Ausführen von Programmen beim Drucken

Es ist möglich, vor dem Drucken ein externes Programm auszuführen. Die Konfiguration des Programmaufrufs erfolgt ebenfalls in der Datei Faktura.PrintSettings.xml.

 <object class="BusinessObjects.Order">
     <job default="no" name="Brutto-Rechnung">
         <template>
             <filename>{rep}/{reportset}/Order.BusinessObject.Brutto.xml</filename>
             <exec>C:\test.bat {UniqueId}</exec>
         </template>
     </job>
 </object>

Im Beispiel oben wird vor dem Ausdruck der Brutto-Rechnung das Programm C:\test.bat ausgeführt. Dem Programm wird als Parameter die Datenbank-ID der Rechnung mit übergeben. Der Name des aufzurufenden Programms und der Parameter wird durch ein Leerzeichen getrennt.

Als Übergabeparameter kommen alle Objekteigenschaften in Frage, die das zu druckende Objekt anbietet. Der Name der Eigenschaft wird dabei einfach in geschweifte Klammern gesetzt.

Öffnen Sie eine beliebige Rechnung und klicken im Menü “Datei” auf das Untermenüelement “Objekt-Inspektor”. Im Objekt-Inspektor sehen Sie nun alle Eigenschaften, die das Objekt zur Verfügung stellt.