CrystalReports: Beispiel Angebotsformular: Unterschied zwischen den Versionen

Aus GEVITAS
Wechseln zu: Navigation, Suche
(Kopf)
(Der Report)
Zeile 66: Zeile 66:
  
 
[[Datei:CrystalReports_Bsp_Angebot_Kopf.png|800px]]
 
[[Datei:CrystalReports_Bsp_Angebot_Kopf.png|800px]]
 +
 +
Basis des Formulars ist das Standard-Formular, das mit REFLEX ausgeliefert wird.
 +
 +
==== Firmen-Texte ====
 +
 +
Sie meisten Felder der Firmen-Angaben sind nicht fest im Formular getextet, sondern kommen aus Formeln. Diese Formeln müssen festgelegte Namen haben, weil sie von REFLEX zur Laufzeit durch die hinterlegten Texte gefüllt werden. Einzelheiten werden [CrystalReports: Formulartexte und Formeln|hier] beschrieben.
 +
 +
==== Adresse, Unterbericht ====
 +
 +
Die Adresse des Kunden wird in einem '''Unterbericht''' ausgegeben. Dieses Verfahren hat u.a. den Vorteil, dass sich der Unterbericht dynamisch an die tatsächliche Größe der Anschrift anpasst.
 +
 +
Ein Unterbericht ist sozusagen ein Formular in einem Formular (ein Report in einem Report). Ein Unterbericht wird mit dem Hauptbericht über ein Datenbank-Feld verknüpft, in diesem Fall die Auftragsnummer im Auftragskopf (MAufKo.AuftrNr). Das heißt, dass der Unterbericht nur die Daten zu einer bestimmten Auftragsnummer zeigt.
 +
  
 
=== Fuss ===
 
=== Fuss ===

Version vom 29. April 2014, 11:00 Uhr

1 Allgemeines

Dieser Artikel zeigt den Aufbau eines Beispiel-Formulares für ein Angebot.

Es enthält:

  • Einen Kopf mit einer Grafik
  • Im Kopf den internen Ansprechpartner mit Name, Telefon, E-Mail usw.
  • Einen Kopf-Text, der sich aus dem eingegebenen Kopftext und den angegebenen Terminen bezieht.
  • Eine "Mit freundlichen Grüßen"-Floskel
  • Die Positionen mit Kapitel-Überschrift
  • Im Fuss die Summen

2 Vorarbeiten

2.1 Automatische Termine

Die Termine sollen in der Art

- Veranstaltungstechnik (gemäß Anhang "Equipmentaufstellung")

- Aufbau der Technik am 27.03.14 und 28.03.14

- Betreuung Ihrer Veranstaltung am 31.03.14

- Abbau der Technik am 05.04.14

erscheinen. Der Anhang "Equipmentaufstellung" beinhaltet die eigentlichen Positionen.

Dazu wird die Register-Seite Termine in der Auftragsverwaltung von REFLEX verwendet.

Nun könnte man von den Benutzern/Benutzerinnen verlangen, dass sie Termine in eine bestimmten Weise anlegen müssen, damit diese vernünftig im Formular erscheinen. Damit den Benutzern/Benutzerinnen die Arbeit erleichtert wird, kann man in den Programm-Parametern festlegen, dass beim Anlegen eines Auftrag schon Standard-Termine eingetragen werden. Das Formular wertet die Angaben in den Terminen aus und druckt die Termin-Angaben entsprechend aus:

Überschrift
Der Termin "- Veranstaltungstechnik (gemäß Anhang "Equipmentaufstellung")" ist nur eine Überschrift und soll kein Datum drucken! Dazu verwenden wir das Datenbank-Feld MAUFJOB.TERMINART (MAUFJOB ist die Tabelle der Auftragstermine). Wenn da keine bestimmte Terminart angegeben wurde (MAUFJOB.TERMINART=0), dann soll auch kein Datum gedruckt werden.
Die Datumsangaben selbts werden über eine Formel gedruckt. Wenn Datum von und -Bis gleich ist, soll "am XX.XX.XXXX" gedruckt werden, sonst "vom XX.XX.XXXX bis XX.XX.XXXX". Wie das genau geht, wird weiter unten beschrieben.

In den Programm-Parametern-> Kalender, Termine, Termine-Manager-->Automatische Auftragstermine hinterlegen wir diese Termine:

CrystalReports Bsp Angebot AutoTermine.png

Aktion/Text
Dieser Text wird gedruckt.
Bezugsdatum
Gibt an, auf welche Spalte sich Relativ zum Datum bezieht.
Relativ zum Datum
Gibt an, wie das Datum des automatischen Termins berechnet wird.
Nur bei Versandart
Gibt an, dass der Termin nur eingefügt wird, wenn die Versandart des Auftrags mit der hier angegebenen übereinstimmt.
Terminart
Wählen Sie hier die Terminart des Termins aus. Bei der Terminart "Allgemein" (Wert=0) soll kein Datum gedruckt werden!

Wenn Sie die Angaben wie oben beschrieben anlegen, werden beim Anlegen eines neuen Auftrags automatisch die entsprechenden Termine in den Auftrag eingefügt! Beispiel:

CrystalReports Bsp Angebot AuftrTermine.png

3 Der Report

3.1 Kopf

Der Kopf besteht aus diesen Bereichen:

CrystalReports Bsp Angebot Kopf.png

Basis des Formulars ist das Standard-Formular, das mit REFLEX ausgeliefert wird.

3.1.1 Firmen-Texte

Sie meisten Felder der Firmen-Angaben sind nicht fest im Formular getextet, sondern kommen aus Formeln. Diese Formeln müssen festgelegte Namen haben, weil sie von REFLEX zur Laufzeit durch die hinterlegten Texte gefüllt werden. Einzelheiten werden [CrystalReports: Formulartexte und Formeln|hier] beschrieben.

3.1.2 Adresse, Unterbericht

Die Adresse des Kunden wird in einem Unterbericht ausgegeben. Dieses Verfahren hat u.a. den Vorteil, dass sich der Unterbericht dynamisch an die tatsächliche Größe der Anschrift anpasst.

Ein Unterbericht ist sozusagen ein Formular in einem Formular (ein Report in einem Report). Ein Unterbericht wird mit dem Hauptbericht über ein Datenbank-Feld verknüpft, in diesem Fall die Auftragsnummer im Auftragskopf (MAufKo.AuftrNr). Das heißt, dass der Unterbericht nur die Daten zu einer bestimmten Auftragsnummer zeigt.


3.2 Fuss

3.2.1 Rabatt-Betrag und -Prozent

Hier wird der Rabatt-Betrag und -Prozentwert per Formel errechnet und ausgedruckt. Die Zeile sieht so aus:

CrystalReports Bsp Angebot FussRabattzeile.png

Die Formel für den Rabatt-Betrag:

// Der Gesamt-Rabattbetrag errechnet sich aus der Kalkulationssumme (Netto-Betrag ohne Rabatt)
// und der rabattierten Summe auf Material (ohne Arb.-Zeit und Dienstleistungen):
{MAUFFU.KalkSumme} - {MAUFFU.PosSumme1}


Die Formel für den Rabatt-Prozentwert:

// Prozentsatz berechnen:
if {MAUFFU.KalkSumme} > 0 then      // Falls kein Betrag drin steht! Sonst Fehler "Division durch 0"!!!
    100 - ( {MAUFFU.PosSumme1} / {MAUFFU.KalkSumme}  * 100 )
else
    0;

Für den (unwahrscheinlichen) Fall, das man ein Angebot ohne Betrag drucken, wird die Abfrage

if {MAUFFU.KalkSumme} > 0 then

verwendet. Da eine Division durch 0 unzulässig ist, würde sonst eine Fehlermeldung erscheinen!

Die Sektion wird unterdrückt, wenn es keinen Rabatt gibt. Die Unterdrückungsformel dazu:

// Unterdrücken, wenn kein Gesamt-Rabatt enthalten ist:
{@GesRabattBetrag} = 0

4 Links