Allgemeines

Der Amadeus Treiber Printer A4 wurde mit Docx4J entwickelt. Ein Rechnungsdruck erfolgt auf den Windows Standard Drucker, jenes PC an dem dieser Treiber ausgeführt wird. Für jede erstellte Rechnung werden mindestens 2 Dokumente erstellt.

 •    Rechnung im Word Format ( *.docx )
 •    Rechnung im PDF Format ( für jede Seite eine PDF-Datei )

Da pro Betrieb mehrere DinA4 Treiber mit unterschiedlichen Templates, laufen können, wird ein KonfigurationsFile benötigt. Diese Files werden durch die DruckerId unterschieden. printerA4.properties_[DruckerId].properties

Einstellungen im Amadeus Backend

Wenn ein DIN A4 Printer mit dazugehörenden Beleg richtig im Amadeus Backend angelegt wurde, wird bei Druckauftrag zuerst im Spool Verzeichnis ein temporäres Dokument angelegt. Somit wird sichergestellt, dass bei Ende des ACF's keine Dokumente verloren gehen.

(Druckereinstellung im Backend)

(Einstellung bei Belegen)  : Hier wird das Design ignoriert


Der Printer A4-Treiber holt sich vom Spool Verzeichnis die Dateien und erstellt die Dokumente. Diese werden im Unterverzeichnis docinvoices gespeichert. Anschließend wird die Datei vom Spool Verzeichnis gelöscht.


Formatierung

Eine A4 Rechnung muss immer in einzelne Tabellen und Spalten unterteilt sein damit die Formatierung beim Ausdruck der Rechnung korrekt aus dem Drucker heraus kommt. 

Beispiel:

{header.address|address}

{header.bill|type&Rechnung&}{header.interim|type&Zwischenrechnung&}{header.copy|type&Rechnungskopie&}-Nr. {header.document|document.number}

Rechnungsdatum: {header.document|business.date}

Uhrzeit: {header.document|document.time}

Es bediente Sie: {header.waiter|waiter.name} 

Tisch Nummer: {header.table|table.number}

 

{sek=kopf}

*** Absatz ***

Übertrag {sek=pageheader}

{balance}

*** Absatz ***

Anzahl

Bezeichnung


Einzelpreis

Gesamt

{count}

{name} {sek=detail}


{balanceUnit}

{balance}

*** Absatz ***

usw...


A4 Beispielrechnung

Hier eine Beispielrechnung:

invoice.docx

Dokumentenname

Der Dokumentname wird wie folgt erstellt

 p_[Druckerid]_[documentnumber]_[Zeit in ms].docx
 und 
 bei Einseitigen Dokument
 p_[Druckerid]_[documentnumber]_[Zeit in ms].pdf
 bei Mehrseitigen Dokument
 p_[Druckerid]_[documentnumber]_[Zeit in ms]_[Seite]v[GesamtSeite]
 Beispiel: 2 Seitiges Dokument hat folgende Files
 p_2_71_1373521074797.docx    
 p_2_71_1373521074797_1v2.pdf
 p_2_71_1373521074797_2v2.pdf


Properties Files

z. B printerA4_2.properties
Das ist das Property File für die DruckerNummer 2 im Amadeus Backend

 Beispiel eines Property Files
 TemplateName=invoice.docx
 MaxDetail_Zeilen=14
 MaxZeichen_ArtikelName=20
 PrinterCommando=PDF


Im ACF-Verzeichnis muss das Template "invoice.docx" vorhanden sein. Sobald mehr als 14 Zeilen im DetailBlock ( = Tender + Artikel ) vorhanden sind wird ein Seitenumbruch erstellt.

Der Artikelname wird nach 20 Zeichen abgeschnitten

Ausdrucken über externes Programm

Wenn kein PDF erstellt werden soll, muss das docx File über den SWriter von LibreOffice im Property File per PrinterComando definiert sein. Hierzu muss der SWriter von LibreOffice Version 5 installiert sein (Download LibreOffice 5: http://updates.amadeus-software.at/files/LibreOffice_5.0.6.3_Win_x86.msi).

automatischer Ausdrucke über SWriter von LibreOffice: "C\:\\Program Files\\LibreOffice 5\\program\\swriter"

Beispiel des gesamten A4 Properties File:

 #changed automaticaly 
 #Thu Mar 20 08:04:59 CET 2014
 TemplateName=invoice.docx
 PageSize=A4
 MaxDetail_Zeilen=30
 MaxZeichen_ArtikelName=20
 PrinterCommando="C\:\\Program Files\\LibreOffice 5\\program\\swriter"

Läuft das ACF über einen Dienst, muss in den Eigenschaften des Dienstes die Anmeldedaten von Windows hinterlegt werden, damit die Rechnung über den Dienst ausgelöst und zum Drucker gesendet werden können.

Document Erstellung

Wenn man PDF erstellt, d.h. Im Propterty File ist als PrinterCommand=PDF kann es vorkommen, dass sich das Aussehen der PDF-Dateien etwas unterscheidet zum ursprünglichen Windows Dokument. Gewisse Word-Schriftarten sind nicht im PDF definiert, deshalb wird hier auf eine Standard Schrift zurückgegriffen. Die Konvertierung in ein PDF ist notwendig um den automatisierten Druck auszulösen.


Template

Der Name des Templates muss im KonfigurationsFile korrekt eingegeben worden sein. Das Template File muss sich im ACF Verzeichnis befinden. Wird der Treiber das 1. Mal verwendet, so lautet der Standard Template Name: invoice.docx

Existiert das Template Document nicht, so erfolgt ein Eintrag in das LogFile.


Das Template muss aus Tabellen bestehen. Leerzeilen zwischen den Tabellen werden ignoriert. Folgende Sektionen bzw. Tabellen sind möglich. Die einzige Pfilichttabelle ist hier die "detail" Tabelle.

 •    kopf
 •    zwkopf
 •    pageheader
 •    detail
 •    pagefooter
 •    summe
 •    zahlung
 •    steuer
 •    fuss

Damit die Tabellen zugeordnet werden können, muss "{sek=tabellenname}" stehen. Wo dieser Text in der Tabelle steht ist egal. Prinzipiell werden alle Felder in "{" "}" eingeschlossen.

Sektion Kopf

Dieser Bereich wird auf jede Seite gedruckt. Folgende Variablen können hier verwendet werden: Beispiele: Tischnummer: {header.table|table.number} 

Neu hinzugekommen:

{header.interim|type&Zwischenrechnung&} Hier wird nur Zwischenrechnung gedruckt sofern es eine Zwischenrechnung ist. Jetzt muss der header.bill und header.billcopy im Formular eingetragen werden, sodass die Zwischenrechnung, Rechnungskopie und Rechnung unterschieden werden können.

Die Rechnungsnummer wird im Kopfbereich mit {header.document|bill.number} ausgegeben.

 header.document
   document.type|BILL
   document.name|Rechnung Service
   document.date|27.05.2013
   document.number|50
   doucment.printername|DinA4Printer
   type|header.document
   document.docnumber|32
   document.pagetotal|&PAGETOTAL&
   document.printertyp|Printer A4
   business.date|30.04.2013
   document.page|&PAGE&
   document.time|10:33:55
   business.zcount|21
   document.systemnumber|76
 header.address
   address|Will Smith
            Main Street 3
            Australia
    
 header.organization
   zum schreiben: organization.street2,|
   zum schreiben: organization.zcount|21
   zum schreiben: organization.number|2596
   zum schreiben: organization.name1|KUFFLER California Kitchen
   zum schreiben: organization.zip|80539
   zum schreiben: organization.country|
   zum schreiben: type|header.organization
   zum schreiben: organization.name|Das Kuffler München
   zum schreiben: organization.name2|
   zum schreiben: organization.street1|Hofgraben 9
   zum schreiben: organization.town|München
 header.waiter
   zum schreiben: person.firstname|Service
   zum schreiben: person.lastname|Ebner
   zum schreiben: waiter.number|999
   zum schreiben: waiter.name|Ebner Sevice
   zum schreiben: person.number|999
   zum schreiben: type|header.waiter
 header.team
   zum schreiben: type|header.team
 header.terminal
   zum schreiben: terminal.number|7
   zum schreiben: site.name|Service
   zum schreiben: profile.name|Service
   zum schreiben: terminal.name|Kasse 1 - Service
   zum schreiben: type|header.terminal
   zum schreiben: site.number|3
   zum schreiben: profile.number|4
 header.table
   zum schreiben: table.number|6
   zum schreiben: type|header.table
 bill.detail.header
   zum schreiben: time.time|10:33:55
   zum schreiben: time.date|27.05.2013
   zum schreiben: type|bill.detail.header

Sektion zwkopf

Diese Sektion wird nur auf der 1. Seite gedruckt. Informationen die nur einmal gedruckt werden sollten, sollen in dieser Tabelle definiert werden. Es sind dieselben Felder möglich wie bei der Sektion Kopf.

Sektion pageheader

Falls es zu einem Seitenumbruch kommt, werden auf den darauffolgenden Seiten der Übertrag berechnet und gedruckt. Hier gibt es nur als Feld

   balance

Sektion detail

Das ist die einzige Tabelle die am Template vorhanden sein muss. Folgende Felder sind zur Zeit definiert. Tender Datensätze werden leicht eingerückt dargestellt.

 count
 name
 lab
 balanceUnit
 balance

Sektion pagefooter

Falls es zu einem Seitenumbruch kommt, wird auf der aktuellen Seiten der Übertrag berechnet und gedruckt. Hier gibt es nur als Feld:

 balance

Sektion summe

Diese Sektion hat nur einen Eintrag und beinhaltet folgende Felder:

 balance
 saldo
 currency

Sektion zahlung

Zahlungen können pro Rechnung mehrfach vorhanden sein. Deshalb werden hier mehrere Zeilen (pro Zahlung eine Zeile) erstellt.

 name
 balance
 currency

Sektion steuer

Auch hier können mehrere Steuersätze vorhanden sein, daher ist eine Zeilendarstellung notwendig.

 lab
 netto
 brutto
 balance
 name

Sektion fuss

Wird nur am Dokumentende, d.h einmal gedruckt. Dieselben Felder wie bei der Sektion Kopf sind möglich