#[Doku] Dokumentvorlagen: Positionsliste und Positionsvorlagen

Morris Metschan

#[Doku] Dokumentvorlagen: Positionsliste und Positionsvorlagen

Beitragvon Morris Metschan » Do. 25. Feb 2016, 15:06

Bild


https://proadsoftware.zendesk.com/hc/de ... 0009728498


Umzug nach ZENDESK abgeschlossen







Dokumentvorlagen: Positionsliste und Positionsvorlagen
  • Dokumentationsstand: 5.0.137
  • Verfügbar ab Lizenztyp Manager
  • Benutzerrechte: [Agentur --> Einstellungen --> Dokumentvorlagen] und [Agentur --> Einstellungen --> Positionsvorlagen]
Die Darstellung der Positionen

Wie wird eine Positionsliste in einem Dokument angezeigt?
Im Dialog [Einstellungen->Dokumentvorlagen] benötigt man eine Dokumentvorlage für jeden Dokumenttyp der Positionen haben kann, also z.B. für Rechnungen oder Angebote.
Tipp: Erstellen Sie sich eine Kopie von einer PROAD Mustervorlage.

Über die Funktion [Vorlage bearbeiten] kann man nun die Dokumentvorlage anpassen. Die Platzierung der Positionsliste wird über das PROAD Feld [Dokument->Positionsliste] an der Cursorposition hinzugefügt.

Als nächstes sind Einstellungen vorzunehmen, um die Darstellung der Positionen festzulegen. Dies kann man im Tabbereich [Einstellungen->Dokumentvorlagen->Layout Positionsliste->Gruppierung der Positionen] machen. Diese Liste legt fest, welche Struktur die Positionsliste haben soll. Wichtig ist dabei die Auswahl einer Positionsvorlage. Diese enthält das Layout und inhaltliche Ausrichtung für die Darstellung der Positionen.

Neue Positionsvorlagen können im Dialog [Einstellungen->Positionsvorlagen] erstellt und bearbeitet werden.
Tipp: Erstellen Sie sich eine Kopie einer PROAD Standard-Positionsvorlage.

Grundsätzlich ist jetzt die Dokumentvorlage bereit Positionen darzustellen. Im Folgenden wird erklärt wie Sie die Darstellung und Struktur anpassen können.


Gruppierung der Positionen

Eine Positionsliste ist hierarchisch aufgebaut, wobei die Hierarchie über sogenannte Gruppen festgelegt wird. Jede Zeile in der Liste entspricht einer Gruppe und besteht aus einem Gruppierungstyp, der Definition des Geltungsbereiches, einer Nummerierungsvariante, sowie der Zuordnung einer Postionsvorlage für das Layout. Wenn mehrere Gruppen angegeben werden, ist die Reihenfolge relevant (von oben nach unten).

Die erste Gruppe kann zum Beispiel eine Projektgruppierung und die zweite eine Leistungsartengruppierung sein. Dann werden zuerst alle Positionen eines Jobs gruppiert und innerhalb dieser Gruppierung wiederum nach Leistungsarten. Durch die Positionsvorlage lassen sich Überschriften, Zwischensummen und die Darstellung einzelner Positionen, samt deren Alternativpositionen festlegen. Dazu später mehr.

Beispiel:
  • Projekt (keine Eigenleistung, keine Fremdleistung, keine Materialleistung)
  • Modul (Eigenleistung, Fremdleistung, Materialleistung)
  • Leistungsart (keine Eigenleistung, Fremdleistung, keine Materialleistung)
  • Einzelposition (Eigenleistung, Fremdleistung, Materialleistung)
Man kann das Regelwerk wie folgt beschreiben:
  • Zuerst werden alle Positionen nach Projekten geordnet. Pro Projekt können Überschrifts- bzw. Zwischensummenzeilen erzeugt werden. Die Positionsvorlage sorgt dafür, wenn sie im Header bzw. Footer entsprechend ausgestaltet wurde.
  • Danach werden alle Positionen die einem Modul zugeordnet sind, entsprechend ihrem Modul ausgegeben. Die Positionsvorlage kann hier im Wiederholungsblock dafür sorgen, dass die Einzelpositionen ausgegeben werden.
  • Übrig bleiben nun alle Fremdleistungen, die keinem Modul zugeordnet sind. Diese Positionen werden nun nach Leistungsart gruppiert ausgegen.
  • Der verbleibende Rest (Eigen- & Materialleistungen ohne Modulzuordnung) wird jeweils als einzelne Position dargestellt.
Einstellungsmöglichkeiten der Gruppenregel

A) Der Gruppentyp legt fest nach welcher Eigenschaft Positionen zusammengefasst werden.

Gruppierungen sind möglich nach:
  1. dem Projekt
  2. der Leistungsart
  3. der Leistungskategorie
  4. der Leistungsgruppe
  5. dem Modul / Gruppennamen der Position
  6. und nach einzelnen Positionen
B) Zeit, Fremd und Material: Die Kategorien einer Gruppierung sorgen dafür, dass unterschiedliche Darstellungen pro Kategorie möglich sind (z.B. Überschriften). Es kann hiermit auch eine feste Reihenfolge der einzelnen Kategorien festgelegt werden.
Ist keine Kategorie ausgewählt, wird die Gruppierung als Klammer verstanden und es werden, mit einer entprechenden Positionsvorlage, Überschrifts- und Zwischensummenzeilen erzeugt. Dies kann beispielsweise bei einem projektübergreifenden Dokument dazu verwendet werden, die einzelnen Projekte mit einer Überschriftszeile darzustellen und anschließend innerhalb dieser Klammerung per Gruppierung nach Gruppennamen, die Positionen auszugeben.
In einem Regelwerk können mehrere Regeln für die gleiche Kategorie verwendet werden.

C) Die Eigenschaft Nummerierung legt fest wie der Gruppenbestandteil an der Gesamtnummer aussehen soll. Zum Beispiel kann der ersten Gruppe eine Buchstabennummerierung zugeordnet sein und der zweiten eine normale Nummerierung. Dann sähe eine Gesamtnummer so aus: A.1, B.1, B.2 usw. Innerhalb der Positionsvorlage können weitere Felder gesetzt werden, um die Darstellung einzelner Positionen im Wiederholungsblock in die Nummer einzuarbeiten. Auch für die Alternativpositionen sind Nummernbestandteile verfügbar.
So kann eine Nummer erstellt werden die strukturell so aussieht:
[Nummerierung Gruppe 1].[Nummerierung Gruppe 2].[Nummerierung Position].[Nummerierung Alternative]
Wann und wo die Nummer dargestellt werden soll kann über die Positionsvorlagen angegeben werden.

D) Mit der Zuordnung einer Positionsvorlage wird das Layout festgelegt. Die Möglichkeiten der Positionsvorlagen werden im folgenden Abschnitt beschrieben.


Gestaltung der Positionsliste

Aufbau einer Positionsvorlage
Eine Positionsvorlage besteht aus drei Teilen für die Darstellung der Gruppe und der einzelnen Positionen, nachfolgend "Header", "Iteration" (Wiederholungsblock) und "Footer" genannt, sowie drei Teilen für die Darstellung der Alternativen für eine einzelne Position, ebenfalls unterteilt in "Alternative Header", "Alternative Iteration" und "Alternative Footer".

Bereiche der Positionsvorlage
Bild

HEADER
Im Kopfbereich können einleitende Informationen über die Gruppierung dargestellt werden also z.B. die Leistungsart, der Gruppenname oder der Projektname etc. je nachdem was gerade gruppiert wird aber auch die Gruppensumme. Sollen für eine Gruppierung keine einzelnen Postitionen dargestellt werden, ist dies überlicherweise das einzige Feld das ausgefüllt wird.

Für eine Positionsvorlage die den Gruppentyp Einzelpositionen zur Anzeige bringen soll, werden hier auch die Einzelpositionsdarstellungen integriert. In diesem Fall sollten die Felder für die Alternativen ausgefüllt werden, wenn damit die Vorlage für Positionsalternativen in Angebotsdokumenten eingesetzt werden kann.

ITERATION (optional)
Im Wiederholungsblock wird die Darstellung der einzelnen Positionen, die in der Gruppe zusammengefasst wurden, festgelegt.

Der Wiederholungsblock ist optional. Soll z.B. nur die zusammengefasste Summe aller Positionen einer Leistungsart ausgegeben werden, aber nicht die einzelnen Positionen dieser Zusammenfassung, lässt man diesen Bereich einfach leer.

Das Darstellen von Alternativen wenn dieser Bereich gefüllt ist, mit Ausnahme der Darstellung nach dem Gruppentyp Einzelpositionen, hier wird der Kopfbereich ausgefüllt.

FOOTER (optional)
Der Footer schließt die Zusammenfassung einer Gruppe ab. Üblicherweise werden hier Zwischensummen zur Anzeige gebracht.

Dieser Bereich ist ebenfalls optional.
Bild

ALTERNATIVE HEADER (optional)
Alternativen können ausgegeben werden wenn einzelne Positionen dargestellt werden. Das heißt, bei der Gruppierung nach Einzelpositionen ist dies immer der Fall, ansonsten muss der Iterationsblock ausgefült sein.

Im Kopf der Alternativdarstellung haben Sie die Möglichkeit diese mit einem kleinen Satz einzuleiten.

ALTERNATIVE ITERATION (optional)
Die Darstellung der einzelnen Alternativen kann im Wiederholungsblock angegeben werden.

ALTERNATIVE FOOTER (optional)
Einen ausleitenden Satz können Sie im Footerbereich der Alternativen hinterlegen.

Welche Felder stehen zur Verfügung?
Es stehen ausgesuchte Felder des Projekts, der Leistungsart, der Leistungsgruppe, der Gruppierung und natürlich der Position selbst zur Verfügung. Zusätzlich werden Felder für die bei dem jeweiligen Projekt ausgewählten Strukturen zur Verfügung gestellt.

Für die Darstellung von Zwischensummen und Positionsnummern stehen berechnete Felder zur Auswahl.


Zusammenspiel zwischen Gruppierungen und Positionsvorlagen

Es werden in den folgenden Punkten einige Beispiele vorgestellt, bei denen das Wissen über den Aufbau einer Positionsvorlage notwendig ist.

Gegenübergestellt werden die Gruppierungseinstellung und eine strukturelle Darstellung der korrespondierenden Positionsliste. In Klammern steht immer das Feld, das für die Darstellung herangezogen wird.

Beispiel Einzelpositionen
Die einfachste Ausgabeform ist die der Einzelpositionen. Alle Positionen werden ihrer Reihenfolge in der Postionsliste nach ausgegeben, hierbei ist die Ausgabe von Alternativen über die Positionsvorlage möglich.

Bild

Ergebnis:
Einzelposition 1 (Header)
Einzelposition 2 (Header)
Einzelposition 3 (Header)

Beispiel Leistungsarten
Eine einfache Gruppierung ist die nach Leistungsarten. Dabei werden alle Positionen einer Leistungsart zusammengefasst und (über die Reihenfolge des ersten Vorkommens einer Leistungsart in der Positionsliste) ausgegeben.

Hierbei ist die Ausgabe der einzelnen Positionen über den Wiederholungsblock möglich. Ist dies der Fall, können hier auch Alternativen für die einzelnen Positionen über die Positionsvorlage ausgegeben werden.

Bild

Ergebnis ohne Wiederholungsblock, d.h. ohne Darstellung der einzelnen Positionen:
Leistungsart A (Header)
Leisuntgsart B (Header)
Leistungsart C (Header)

Ergebnis mit Wiederholungsblock, d.h. mit Darstellung der einzelnen Positionen:
Leistungsart A (Header)
Position 1 (Iteration)
Position 2 (Iteration)
Leistungsart A (Footer)
Leistungsart B (Header)
Position 3 (Iteration)
Position 4 (Iteration)
Position 5 (Iteration)
Leistungsart B (Footer)
Leistungsart C (Header)
Position 6 (Iteration)
Leistungsart C (Footer)

Beispiel Module oder Leistungsgruppe mit Einzelpositionen
Da es auch möglich ist, das eine Position kein Modul oder Gruppennamen bzw. Leistungsgruppe haben kann, braucht es für eine solche Gruppierungsart eine zusätzliche Zeile für die Darstellung der Einzelpositionen ohne Module bzw. Leistungsgruppe (Achtung: "Gruppenname" ist hier tatsächlich das Feld in der Positionsliste und hat nichts mit dem Gruppierungstyp zu tun).

Dies sieht dann so aus:
Bild

Ergebnis mit Wiederholungsblock:
Modul A (Header)
Position 1 (Iteration)
Position 2 (Iteration)
Modul A (Footer)
Modul B (Header)
Position 3 (Iteration)
Position 4 (Iteration)
Position 5 (Iteration)
Modul B (Footer)
Modul C (Header)
Position 6 (Iteration)
Modul C (Footer)
Einzelposition ohne Modul 7 (Header)
Einzelposition ohne Modul 8 (Header)

Beispiel projektübergreifende Darstellung für Module mit Einzelpositionen
Eine projektübergreifende Darstellung für Module mit Einzelpositionen sähe folgendermaßen aus:
Bild

Das Ergebnis mit Wiederholungsblock könnte so aussehen:
Projekt I (Header)
Modul A (Header)
Position 1 (Iteration)
Position 2 (Iteration)
Modul A (Footer)
Einzelposition ohne Modul 7 (Header)
Projekt I (Footer)
Projekt II (Header)
Modul B (Header)
Position 3 (Iteration)
Position 4 (Iteration)
Position 5 (Iteration)
Modul B (Footer)
Modul C (Header)
Position 6 (Iteration)
Modul C (Footer)
Einzelposition ohne Modul 8 (Header)
Projekt II (Footer)

Das Ergebnis mit Wiederholungsblock und Alternativdarstellung könnte so aussehen:
Projekt I (Header)
Modul A (Header)
Position 1 (Iteration)
Position 2 (Iteration)
Alternative für Position 2 (Header)
Alternative für Position 2 - a (Iteration)
Alternative für Position 2 - b (Iteration)
Alternative für Position 2 (Footer)
Modul A (Footer)
Einzelposition ohne Modul 7 (Header)
Projekt I (Footer)
Projekt II (Header)
Modul B (Header)
Position 3 (Iteration)
Position 4 (Iteration)
Position 5 (Iteration)
Modul B (Footer)
Modul C (Header)
Position 6 (Iteration)
Modul C (Footer)
Einzelposition ohne Modul 8 (Header)
Alternative für Position 8 (Header)
Alternative für Position 8 - a (Iteration)
Alternative für Position 8 (Footer)
Projekt II (Footer)


Positionsvorlagen mit HTML und CSS

PROAD Standard Vorlagen und die CSS Regeln
PROAD liefert sogenannte Mustervorlagen samt dazugehörigen Positionsvorlagen aus. Diese dienen als Basis für individuell angepasste Vorlagen. Anhand dieser Vorlagen kann man das Zusammenspiel zwischen dem HTML in den Positionsvorlagen und dem CSS in den Dokumentvorlagen gut lernen. Bitte erstellen Sie sich eine Kopie einer der Mustervorlagen, denn die Mustervorlagen sind schreibgeschützt.

An die CSS-Regeln kommt man, wenn man im Editor der Dokumentvorlage in den Quellcode-Modus wechselt. Dann sollte oben ein Bereich angezeigt werden, der durch <style..> und </style> umschlossen ist. Hier werden die CSS-Regeln bestimmt.

Eine weitere Möglichkeit um CSS-Regeln für Dokumente zu definieren ist im Dialogbereich [Einstellungen -> Grundeinstellungen -> Dokumente -> Fonts]. Jede Zeile in der Liste kann einen CSS-Text enhalten. Dieser wird in eine CSS-Datei geschrieben, die dann sowohl im Editor, als auch bei der PDF-Erstellung geladen wird.

Warum werden DIV-Elemente mit Flexbox Design verwendet?
Es gibt viele Techniken, um die Positionsliste umzusetzen. Man kann HTML-Tabellen verwenden oder Listen. Wir haben uns für DIV-Elemente entschieden, die mit dem Flexbox Design eine gute Tabellendarstellung ermöglichen. Näheres finden sie hier: https://css-tricks.com/snippets/css/a-guide-to-flexbox/.

Der Grund ist, dass die PDF-Erstellung bei Verwendung von Tabellen bei einem Seitenwechsel die Zellen nicht sauber auftrennt und es häufig zu Textfragmenten kommen kann. Mit DIV-Elementen im Flexbox-Design passiert das nicht.

HTML / CSS
Das Beispiel zeigt Ausschnitte aus dem CSS und der Modul-Positionsvorlage aus der PROAD Mustervorlage.

Die PROAD Mustervorlagen sind auf eine 6-spaltige Darstellung ausgelegt, das heißt dargestellt werden die einzelnen Positionen mit der Positionsnummer, dem Leistungsartennamen samt Positionsbeschreibung, die Anzahl, die Einheit, der Einzelverkaufspreis sowie der Nettowert der Position.

Besonders zu beachten sind folgende Punkte:
  • Die Spalten "col1", "col2" und "colright" werden als Flexbox definiert.

    .pos_row .col1,
    .pos_row .col2,
    .pos_row .colright {display: -webkit-flex;display: flex;}
  • Alle "Zellen" die eine Beschreibung ausgeben werden mit einer zusätzlichen DIV-Klammer versehen um das Beschreibungsfeld in seinem Platz zu beschränken. Anderenfalls würden HTML Tags für Fettschrift, Italic oder Unterstrich etc. die Darstellung verfälschen bzw. die tabellarische Form zerstören können.

    Header
    <div class="col2to6"><div style="width:100%"><strong>IT.mod_name</strong></br>IT.mod_desc</div></div>

    Iteration
    <div class="col2"><div style="width:100%">IT.sc_name<br/>IT.desc</div></div>
  • Über HTML und CSS werden alle Spalten nach der Beschreibung mit einer DIV-Klammer getrennt. Dies hat ebenfalls mit der Darstellung der Beschreibungsspalte zu tun. Über CSS wird die Klammer über "colright" angesprochen.

    <div class="colright">
    <div class="col3">IT.amount</div>
    <div class="col4">&nbsp;IT.sc_unit</div>
    <div class="col5">IT.sp_val DO.cur</div>
    <div class="col6">IT.net DO.cur</div>
    </div>
  • Die Breiten der Spalten "col1", "col2" und "colright" werden über Prozentwerte angegeben, die zusammen 100% ergeben müssen. Auch die Breiten der restlichen Spalten, die in der "colright"-Klammer zusammengefasst, müssen (innerhalb dieser Klammer) summiert 100% ergeben.

    .col3 {width:21%;text-align: right;}
    .col4 {width:21%;}
    .col5 {width:29%;text-align: right;}
    .col6 {width:29%;text-align: right;}
  • Leere "Zellen" müssen ein <span> und ein Leerzeichen beinhalten, sonst wird die Darstellung verfälscht!

    <div class="col1"><span>&nbsp;</span></div>
Ausschnitt aus dem CSS Bereich der PROAD Mustervorlagen:

.pos_row {width:100%;float:left;padding-bottom:15px;}
.pos_row > div {vertical-align: top;float:left;}
.pos_row .colright > div {float:left;}
.pos_row .col1,
.pos_row .col2,
.pos_row .colright {display: -webkit-flex;display: flex;}
.col1 {width:7.5%;}
.col2 {width:37.5%;}
.colright {width: 55%;}
.col3 {width:21%;text-align: right;}
.col4 {width:21%;}
.col5 {width:29%;text-align: right;}
.col6 {width:29%;text-align: right;}
.col2to6 {width:92.5%;}
.col3to6 {width:55%;text-align: right;}



Kopf der Moduldarstellung der PROAD Mustervorlagen (HEADER):
Der Modulkopf wird als eigene Zeile definiert (pos_row) und anschließend die Zellen bestimmt. Wichtig ist hier, dass die Beschreibungsspalte mit einer zusätzlichen DIV-Klammer versehen wird, damit die Beschreibung inkl. Fettschrift etc. ohne Probleme angezeigt werden kann.

Wichtig ist auch die Aufteilung der beiden Zellen. Während die erste Zelle die Nummerierung für das Modul enthält und mit einer Breite von 7,5% versehen ist, wird mittels der CSS Klasse "col2to6" der Beschreibungsbereich auf 92,5% Breite gesetzt. Die in Summe geforderten 100% der Breite sind somit erreicht.

Tipp: Sollten keine Einzelpositionen erwünscht sein, kann hier auch über die Gruppensumme der Wert des Modules als Ganzes ausgegeben werden. Dies funktioniert natürlich mit jeder zusammengefassten Gruppe.

<div class="pos_row">
<div class="col1">IT.posno_all</div>
<div class="col2to6"><div style="width:100%"><strong>IT.mod_name</strong></br>IT.mod_desc</div></div>
</div>



Wiederholungsblock der Moduldarstellung der PROAD Mustervorlagen (ITERATION):
In der PROAD Mustervorlage wird eine Moduldarstellung mit Einzelpositionsausgabe verwendet. Deshalb wird im Wiederholungsblock für jede einzelne Position eine eigene Zeile definiert (pos_row).

In der ersten Zelle wird wieder die Nummer ausgegeben. Hier kann man schön sehen wie die Nummer zusammengebaut wird.
Zur Erinnerung: wir sind immer noch in einer Positionsvorlage für die Moduldarstellung, d.h. die Nummer ist immer noch die gleiche wie im Kopf. PROAD stellt nun Felder zur Verfügung, jeweils als Variante mit Buchstaben oder Zahlen, um die einzelnen Positionen eindeutig zu nummerieren. Auch für die Alternativen sind Varianten mit Buchstaben und Zahlen für die Nummerierung verfügbar.

Die zweite Zelle enthält den Leistungsartennamen und die Leistungsartenbeschreibung. Mittels <br/> wird ein Zeilenumbruch in der Zelle eingefügt. Auch hier muss wegen des Beschreibungsfeldes eine zusätzliche DIV-Klammer vorgesehen werden.

Man sieht hier die Verschachtelung der "colright" Zelle sehr schön. Während "col1", "col2" und "colright" zusammen 100% Breite ergeben müssen ist dies dann auch für "col3" bis "col6" gefordert und eingehalten.

Tipp: Dieser HTML Text kann auch als Basis für eine Einzelpositions- oder Alternativdarstellung genommen werden es wären lediglich Anpassungen für die Nummerierung und evtl. für die Darstellung des Nettowertes notwendig.

<div class="pos_row">
<div class="col1">IT.posno_all.IT.posno_inner</div>
<div class="col2"><div style="width:100%">IT.sc_name<br/>IT.desc</div></div>
<div class="colright">
<div class="col3">IT.amount</div>
<div class="col4">&nbsp;IT.sc_unit</div>
<div class="col5">IT.sp_val DO.cur</div>
<div class="col6">IT.net DO.cur</div>
</div>
</div>


Footer der Moduldarstellung der PROAD Mustervorlagen (FOOTER):
De PROAD Mustervorlagen stellen Zwischensummen dar.

Tipp: Selbst wenn man diese nicht ausgeben möchte ist hier eine zusätzliche "leere" Zeile keine schlechte Idee, da man so zwischen zwei Zeilen einen Abstand definieren kann.

Hier ist wieder eine Zeile (pos_row) definiert. Die erste Zelle ist leer. Damit bei der PDF-Erstellung dadurch keine Probleme entstehen, wird hier ein <span>-Tag mit Leerzeichen eingefügt.

Ansonsten wird die zweite und dritte Spalte abgebildet, nur das in "colright" nur eine anstatt vier Zellen definiert wird, um die Zwischensumme darzustellen.

<div class="pos_row">
<div class="col1"><span>&nbsp;</span></div>
<div class="col2"><b>Zwischensumme</b></div>
<div class="colright">
<div style="width:100%;text-align:right;"><b>IT.subtot_group DO.cur</b></div>
</div>
</div>