REFLEX Standard-Report Angebot/Auftrag
Inhaltsverzeichnis
1 Allgemeines
Der Report "AngebotAuftrag_Standard_Vxx.fr3" wird für den Druck eines Angebots oder einer Auftragsbestätigung verwendet. Er unterscheidet im Design zwischen Miete und Verkauf.
1.1 Verzeichnis, Basis-Report
Der Report befindet sich im Formular-Verzeichnis "Formular\Auftrag".
Der Report verwendet als Basis für den Kopf- und Fuss-Bereich den Basis-Report "BasisReport_01.fr3". Dieser muss im Verzeichnis "Formular" liegen.
1.2 Auftragskennzeichen
Das Desgin des Reports kann über Auftragskennzeichen gesteuert werden. Folgende Kennzeichen werden verwendet:
Kennzeichen | Parameter-Text | Mögliche Werte | Auswirkung |
---|---|---|---|
<AuftragsKopf."KENNZ1"> | Logo drucken | Ja, Nein, Leer | Bei Nein wird das Logo unterdrückt, bei allen anderen Werten wird das Logo gedruckt. |
<AuftragsKopf."KENNZ2"> | Positions-Rabatt | Ja, Nein, Leer | Bei Nein wird der Rabatt in den Positionen und im Fuss unterdrückt, bei allen anderen Werten wird er gedruckt. |
<AuftragsKopf."KENNZ3"> | Rabatt im Fuss | Ja, Nein, Leer | Bei Nein wird der Rabatt im Fuss unterdrückt, bei allen anderen Werten gedruckt. |
<AuftragsKopf."KENNZ4"> | Einzelpreise | Ja, Nein, Leer | Bei Nein werden die Einzelpreise unterdrückt, bei allen anderen Werten werden die Einzelpreise gedruckt. |
<AuftragsKopf."KENNZ5"> | Kapitelpreise drucken | Ja, Nein, Leer | Bei Nein werden die Kapitel-Preise in den Positionen unterdrückt, bei allen anderen Werten werden sie gedruckt. |
<AuftragsKopf."KENNZ5"> | Kapitelpreise drucken | Ja, Nein, Leer | Bei Nein werden die Kapitel-Preise in den Positionen unterdrückt, bei allen anderen Werten werden sie gedruckt. |
<AuftragsKopf."KENNZ6"> | Nur Kapitel? | Ja, Nein, Leer | Bei Ja werden nur die Kapitel-Überschriften gedruckt, die Positionen werden unterdrücktl. |
<AuftragsKopf."KENNZ7"> | Kapitel-Summen im Fuss | Ja, Nein, Leer | Bei Nein werden die Kapitel-Summen im Kapitel-Fuss nicht gedruckt. |
<AuftragsKopf."KENNZ8"> | Artikel-Texte? | Ja, Nein, Leer | Bei Nein werden die Artikel-Texte nicht gedruckt. |
- Hinweis: "Gedruckt" heißt natürlich auch angezeigt, exportiert usw.
Siehe auch:
2 Vorschau
In der Vorschau sieht das Formular so aus:
3 Bereiche
3.1 Seitenkopf, Seitenfuss
Diese Bereiche kommen aus dem Basis-Report. Änderungen sollten immer im Basis-Report vorgenommen werden, weil diese sich auf alle anderen Reports auswirken, die den Basis-Report verwenden!
3.1.1 Der Bereich
3.1.2 Code dazu
Im Ereignis OnBeforePrint des Bild-Objektes 'pictureBasisKopf wird das Logo ausgeschaltet, wenn das Auftragskennzeichen 1 auf "Nein" steht:
procedure pictureBasisKopfLogoOnBeforePrint_inherited(Sender: TfrxComponent); begin if <AuftragsKopf."KENNZ1"> = 'Nein' then pictureBasisKopfLogo.Visible := False; end;
Hinweis: Das "_inherited" ("ererbt") im Prozedur-Namen kommt daher, weil das Objekt ursprünglich aus dem Basis-Report kommt.
Siehe auch: FastReport: Steuerung des Report mit Auftragskennzeichen.
3.2 Kunden-Adresse
Die Kunden-Adresse incl. Ansprechpartner liegt im BasisSeitenkopfChild aus dem Basis-Report.
Man kann also auch Felder in einen Bereich legen, der eigentlich nicht zum eigentlichen Report gehört. Die sind dort aber nur in dem Haupt-Report, nicht im Basis-Report!
Die Felder haben die Eigenschaften (rechte Maustaste und Option wählen)
- Dehnen: Das Feld wird automatisch an die Höhe des Inhalts angepasst.
- Verschieben wenn Überlappung: Das Feld wir nach unten verschoben, wenn sich ein Feld darüber ausdehnt.
- Hinweis
- Das Ansprechpartnerfeld wird derzeit vorausgesetzt!
- Es ist noch kein Mechanismus eingebaut, der die unteren Felder nach oben schiebt, wenn es keinen Ansprechpartner gibt.
- Die Schwierigkeit ist, dass die Felder die Option Verschieben wenn Überlappung haben, damit sie sich nach unten verschieben, wenn der Firmenname mehrzeilig ist.
- Dadurch verwaltet der Report die Positionen automatisch, ein Code, der die Position manuell anpasst
- (z.B.
if <Ansprechpartner."Briefanrede"> = '' then AuftragsKopfStr.Top := AnsprechpartnerBriefanrede.Top;
)
- (z.B.
- hat dadurch keine Wirkung!
3.3 Der Auftagskopf
Die folgenden Bereiche gehören alle zum Auftragskopf.
Die Bänder haben alle das Dataset AuftragsKopf. Sie gehören zum Band-Typ MasterData, werden also nur ein mal ausgegeben!
Der Kopf ist in verschiedene Bereiche eingeteilt, die teilweise unter bestimmten Umständen unterdrückt werden.
Siehe auch FastReport Angebots-/Auftragsformular mit Terminen.
3.3.1 Erste Seite: Formular-Titel, Datum, Seiten-Nummer
Der Bereich MasterAuftragskopf beinhaltet den Formulartitel und die Seitennummer für die erste Seite. (Die Schrift ist etwas größer als der Titel für die Folgeseiten)
Das Feld für den Formular-Titel hat folgenden Inhalt:
[Titel] Nr. [AuftragsKopf."AuftrNr"].[AuftrStatistik."AuftrVersion"] vom [Date]
Feld | Beschreibung |
---|---|
[Titel]
|
Diese Variable wird vom Programm an den Report übergeben. Der Text dazu kommt aus den Programm-Parametern. Weitere Informationen dazu |
[AuftragsKopf."AuftrNr"].[AuftrStatistik."AuftrVersion"]
|
Hier wird die Auftragsnummer ausgegeben, gefolgt von einem Punkt und der Versionsnummer des Auftrags.
|
[Date]
|
In dieser Systemvariable steht das aktuelle Tagesdatum.
Alternativ dazu könnte man auch das gespeichert Druckdatum benutzen. Das Feld würde dann so aussehen: [Titel] Nr. [AuftragsKopf."AuftrNr"].[AuftrStatistik."AuftrVersion"] vom [AuftragsKopf."DruckDat"] |
- Hinweis
- Der Titel für die Folgeseiten wird über den Header der Positionen HeaderPositionen ausgegeben.
3.3.2 Ab zweiter Seite: Formular-Titel, Datum, Seiten-Nummer
Der Titel für die Seiten 2 - Ende wird über den Header der Positionen HeaderPositionen ausgegeben.
Damit dieser Bereich auf der ersten Seite unterdrückt wird, gibt es diesen Code in HeaderPositionenOnBeforePrint:
procedure HeaderPositionenOnBeforePrint(Sender: TfrxComponent); begin // Auf der 1. Seite unterdrücken: if <Page#> = 1 then begin MemoAuftrNrTitelHeaderPositionen.Visible := False; HeaderSeitenNummer.Visible := False; HeaderPositionen.Visible := False; end else begin MemoAuftrNrTitelHeaderPositionen.Visible := True; HeaderSeitenNummer.Visible := True; HeaderPositionen.Visible := True; end; end;
(Eigentlich gehört dieser Bereich nicht zum Kopf sondern zum Header über den Positionen)
3.3.3 Auftragsdaten im Kopf
3.3.3.1 MasterDataKopfMiete
In diesem Bereich stehen die Kopfdaten für einen Miet-Auftrag.
Deshalb muss dieser Bereich ausgeblendet werden, wenn es um einen Verkaufs-Auftrag geht. Außerdem sollen die Aufbau, Abbau, Probe-Felder ausgeblendet werden, wenn dort kein Text eingegeben wurde.
Dazu gibt es diesen Code in MasterDataKopfMieteOnBeforePrint:
procedure MasterDataKopfMieteOnBeforePrint(Sender: TfrxComponent); begin if <AuftragsKopf."Bereich_1Verkauf_2Miete_3Mietverkauf"> <> 2 then MasterDataKopfMiete.Visible := False // Es ist Verkauf, also Bereich ausschalten! else begin MasterDataKopfMiete.Visible := True; // Es ist Miete, also Bereich einschalten! // Bei Miete: Datumsfelder im Kopf nur sichtbar, wenn Text drin steht: if <AuftragsKopf."AufbauText"> = then begin AuftragsKopfAufbauDatum.Visible := False; AuftragsKopfAufbauText.Visible := False; AuftragsKopfAufbauZeit.Visible := False; end; if <AuftragsKopf."AbbauText"> = then begin AuftragsKopfAbbauDatum.Visible := False; AuftragsKopfAbbauText.Visible := False; AuftragsKopfAbbauZeit.Visible := False; end; if <AuftragsKopf."ProbeText"> = then begin AuftragsKopfProbeDatum.Visible := False; AuftragsKopfProbeText.Visible := False; AuftragsKopfProbeZeit.Visible := False; end; end; end;
Wenn im Feld <AuftragsKopf."Bereich_1Verkauf_2Miete_3Mietverkauf">
(es heißt wirklich so!) 1 steht, ist es ein Verkaufs-Auftrag, bei 2 ein Miet-Auftrag, bei 3 ein Mietartikel-Verkaufen-Auftrag.
- Hinweis
- Die Auswahl-Felder für AufbauText, ProbeText und AbbauText können in den Programm-Parametern festgelegt werden. Das wird in diesem Artikel beschrieben.
3.3.3.2 MasterDataKopfVerkauf
In diesem Bereich stehen die Kopfdaten für einen Verkaufs-Auftrag.
Deshalb muss dieser Bereich ausgeblendet werden, wenn es um einen Miet-Auftrag geht. Dazu gibt es den Code in MasterDataKopfMieteOnBeforePrint, wie oben beschrieben.
3.3.3.3 MasterDataVARaum
In diesem Bereich stehen die Veranstaltungs-Raum und -VA-Ort (Kurzname) für einen Miet-Auftrag.
Dieser Bereich soll nur gedruckt werden, wenn es einen Raum oder VA-Ort-Namen gibt. Deshalb gibt es diesen Code in MasterDataVARaumOnBeforePrint:
procedure MasterDataVARaumOnBeforePrint(Sender: TfrxComponent); begin // Wenn beide Felder leer sind: Ausblenden! if ( <AuftragsKopf."VA-OrtKurzname"> = ) and ( <AuftragsKopf."VA-Raum"> = ) then MasterDataVARaum.Visible := False; end;
- Hinweis
- Der VA-Ort-Name wird im Auftragskopf unter dem VA-Ort optional angegeben.
3.3.3.4 MasterKoptext
In diesem Bereich stehen die Ansprechpartner-Daten des Kopfes.
Er wird immer ausgegeben und hat keine Ereignisse.
- Ansprechnpartner Kunde
- Die Daten kommen aus den Kontakt-Stammdaten des Kunden bzw. Ansprechpartners. Weitere Informationen.
- Ansprechnpartner Auftrag
- Die Daten kommen aus den Personen-Stammdaten des Auftragsbearbeiters. Weitere Informationen.
3.3.4 Standardtext, Text aus Kopf
Im Bereich MasterDataStandardTextKopf steht der Standard-Text, der in den Programmparametern für dieses Formular festgelegt wurde. Weitere Informationen.
Darunter, im Bereich MasterDataKopftext steht der Text, der im Auftragskopf eingegeben wurde. Dieser Text ist also eine Ergänzung des Standard-Textes. Weitere Informationen.
3.4 Positionen
Zentrales Band der Positionen ist das Band DetailPositionen. Es gehört zum Band-Typ DetailData mit den Daten aus der Tabelle Positionen. Das bedeutet, dass dieser Bereich wiederholt ausgegeben wird, bis es keine Positionsdaten mehr gibt!
Um, dieses Band herum wurden andere Bänder gelegt:
- Ein Header ("HeaderPositionen"), der den Titel über die Positionen beinhaltet. Dieser wird oben im Kopf beschrieben.
- Ein GroupHeader ("GroupHeaderKapitel"), der die Kapitel-Bezeichnungen beinhaltet. Das bedeutet, dass in dem Report die Gruppierungs-Funktion benutzt wird. Gruppieren bedeutet, dass die Positionen nach der Kapitel-Nummer getrennt werden. Die Kapitel-Überschrift steht im GroupHeader, die eigentlichen Positionen im Band DetailPositionen.
- Ein Child-Band ("ChildGroupHeader1") für den Text der Positionen. Ein Child-Band deshalb, weil das Band ausgeblendet wird, wenn gar kein Text angegeben wurde.
- Ein Footer ("FussPositionen"), in dem die Summen, Zahlungskonditionen usw. stehen. Dieser Bereich wird unten unter "Fuss" behandelt.
3.4.1 HeaderPositionen, Überschrift über die Positionen
Dieser Bereich beinhaltet den Titel über die Positionen. Dieser wird oben im Kopf beschrieben.
Wichtig ist die Eigenschaft (rechte Maustaste auf dem Bereich) Auf neuer Seite wiederholen. Diese legt fest, dass der Header auf jeder neuen Seite oben gedruckt wird!
Der Bereich hat ein Child (Kind) mit dem Namen "ChildHeaderPositionen", in den die Überschrift über den Positionen liegt.
Weil die Überschrift nicht gedruckt werden soll, wenn es auf der neuen Seite gar keine Positionen mehr gibt, wird dieser Code in ChildHeaderPositionenOnBeforePrint verwendet:
procedure ChildHeaderPositionenOnBeforePrint(Sender: TfrxComponent); begin // Überschriftszeile unterdrücken, wenn keine Positionen mehr kommen: if DetailPositionen.DataSet.EOF then ChildHeaderPositionen.Visible := False else ChildHeaderPositionen.Visible := True; end;
3.4.2 GroupHeaderKapitel
Beinhaltet die Kapitel-Bezeichnungen. Das bedeutet, dass in dem Report die Gruppierungs-Funktion benutzt wird. Gruppieren bedeutet, dass die Positionen nach der Kapitel-Nummer getrennt werden. Die Kapitel-Überschrift steht im GroupHeader, die eigentlichen Positionen im Band DetailPositionen.
Es gibt diese Besonderheiten:
- Wenn in der Auftragsposition das Kennzeichen "Neue Seite vorher" gesetzt wurde, soll ein Seitenwechsel durchgeführt werden, bevor dieser Bereich gedruckt wird.
- Wenn im Kennzeichen 4 "Nein" steht, soll der Bereich unterdrückt werden.
Deshalb gibt es im Ereignis GroupHeaderKapitelOnBeforePrint diesen Code:
procedure GroupHeaderKapitelOnBeforePrint(Sender: TfrxComponent); begin // Dieser Code wird ausgeführt, BEVOR das Positionen-Gruppenkopf-Band (die Kapitel-Überschrift) ausgegeben wird. // Wenn das Kennzeichen "Seitenwechsel Vorher" gesetzt ist: if <Positionen."Seitenwechsel_0Nein_1Vorher_2Nachher"> = 1 then Engine.NewPage; // Neue Seite, Seitenkopf usw. drucken // Kennzeichen 4 = Kapitelpreise Ja/Nein if <AuftragsKopf."KENNZ4"> = 'Nein' then begin memoKapitelBetrag.Visible := False; end; end;
3.4.3 ChildGroupHeader1
für den Text der Positionen. Ein Child-Band deshalb, weil das Band ausgeblendet wird, wenn gar kein Text angegeben wurde. Deshalb gibt es im Ereignis ChildGroupHeader1OnBeforePrint diesen Code:
procedure ChildGroupHeader1OnBeforePrint(Sender: TfrxComponent); begin // Unterdrücken, wenn kein Zusatztext vorhanden ist: if <Positionen."TextPosition"> = then ChildGroupHeader1.Visible := False else ChildGroupHeader1.Visible := True; end;
3.4.4 DetailPositionen
In diesem Bereich werden die eigentlichen Auftragspositionen ausgegeben.
In DetailPositionenOnBeforePrint gibt es einigen Code, der das Verhalten der Objekte dieses Bereiches beeinflusst.
Er befindet sich nach
procedure DetailPositionenOnBeforePrint(Sender: TfrxComponent); begin // Dieser Code wird ausgeführt, BEVOR das Positionen-Detail-Band // ausgegeben wird.
Im Code werden Felder auf unsichtbar ("Visible=False
") gestellt, abhängig von bestimmten Werten.
Weil das die Abfragen einfacher macht, werden erst einmal alle betroffenen Objekte auf Sichtbar ("Visible=True
") gestellt:
// Grundeinstellung: Erst mal alles einschalten, unten u.U. wieder aus: MemHeaderEinzPreis.Visible := True; memoHeaderRabattTitel.Visible := True; memoHeaderGesPreis.Visible := True; memoPositionenRabattProz.Visible := True; memoPosEinzelPreis.Visible := True; memoPosGesBetrag.Visible := True; AuftrStatistikSummeRabatt.Visible:= True;
Im weiteren Verlauf werden dann einige Objekte wieder auf unsichtbar ("Visible=False") zurückgestellt, wenn es erforderlich ist.
Der Code der Positionen im Einzelnen:
- Wenn das Kennzeichen 3 = Einzelpreise sichtbar Ja/Nein auf "Nein" steht
- Preis- und Rabattfelder ausblenden::
// Kennzeichen 3 = Einzelpreise sichtbar Ja/Nein: if <AuftragsKopf."KENNZ3"> = 'Nein' then begin MemHeaderEinzPreis.Visible := False; memoHeaderRabattTitel.Visible := False; memoHeaderGesPreis.Visible := False; end;
- Wenn der Gesamtpreis 0 ist (z.B. bei 100 % Rabatt)
- Den Einzelpreis unterdrücken:
// Wenn der Gesamtpreis 0 ist, den Einzelpreis unterdrücken: // (z.B. bei 100 % Rabatt) if <Positionen."GesBetrag"> = 0 then begin memoPosEinzelPreis.Visible := False; memoPositionenRabattProz.Visible := False; end;
- Titel "Rabatt" in Überschrift
- Unterdrücken, wenn keine Rabatt-Postion vorhanden ist:
// Titel "Rabatt" in Überschrift unterdrücken, wenn keine Rabatt-Postion vorhanden ist. // (Hinweis: Hinter diesem Feld liegt ein leeres Textfeld, das den Rahmen anzeigt, wenn dieses Feld unsichtbar ist!) if <AuftrStatistik."AnzahlRabattPos"> = 0 then memoHeaderRabattTitel.Visible := False;
- Hinweis
- Das Programm stellt das Feld
<AuftrStatistik."AnzahlRabattPos">
zur Verfügung. In diesem Feld steht die Anzahl der Positionen, die einen Rabatt beihalten. Wenn hier 0 steht, gibt es keine Position mit Rabatt!
- Wenn das Kennzeichen 2 = Rabatt Ja/Nein auf "Nein" steht
- Rabatt in den Positionen und im Fuss unterdrücken:
// Kennzeichen 2 = Rabatt Ja/Nein if <AuftragsKopf."KENNZ2"> = 'Nein' then begin memoHeaderRabattTitel.Visible := False; memoPositionenRabattProz.Visible := False; AuftrStatistikSummeRabatt.Visible := False; end;
- Kapitel-Position ausblenden
- Da die Kapitel-Positionen (1.0, 2.0, 3.0 usw.) im Gruppenkopf gedruckt werden, müssen sie hier im eigentlichen Positionsbereich unterdrückt werden.
- Außerdem können die Positionen über das Kennzeichen 6 ("nur Kapitel drucken = Ja) komplett unterdrückt werden:
// Kapitel-Position ausblenden: // Kennzeichen "Nur Kapitel" = 'Ja': Positionen unterdrücken: if ( <Positionen."PosNr"> = 0 ) or ( <AuftragsKopf."KENNZ6"> = 'Ja' ) then begin DetailPositionen.Visible := False; end else DetailPositionen.Visible := True;
- Rabatt % unterdrücken,
- wenn's keinen Rabatt-Betrag gibt:
// Rabatt % unterdrücken, wenn's keinen Rabatt-Betrag gibt: if <Positionen."RabattBetrag"> = 0 then memoPositionenRabattProz.Visible := False;
- Einzelpreise
- sichtbar abhängig vom Kennzeichen 3:
// Einzelpreise sichtbar abhängig vom Kennzeichen 3: if <AuftragsKopf."KENNZ3"> = 'Nein' then begin memoPosEinzelPreis.Visible := False; memoPositionenRabattProz.Visible := False; memoPosGesBetrag.Visible := False; end;
- Seitenwechsel
- Wenn das Kennzeichen "Seitenwechsel Vorher" in einer Auftragspositionen gesetzt wurde, muss ein Seitenwechsel durchgeführt werden. Das diese Abfrage auch in der Kapitel-Überschrift drin ist, darf sie hier nur gemacht werden, wenn es eine "normale" Position ist, also die Positionsnummer größer als 0 ist (
<Positionen."PosNr"> > 0
:
// Wenn das Kennzeichen "Seitenwechsel Vorher" gesetzt ist: if <Positionen."PosNr"> > 0 then // NICHT bei Kapitel-Position, das wird da schon gemacht! if <Positionen."Seitenwechsel_0Nein_1Vorher_2Nachher"> = 1 then Engine.NewPage; // Neue Seite, Seitenkopf usw. drucken
3.4.5 Optionale Codierung in den DetailPositionen
Im Folgenden werden Codes beschrieben, die man optional in den Positionen verwenden kann. Diese sind im Standard-Formular nicht enthalten, können aber auf Wunsch verwendet werden. Dazu können Sie die hier aufgeführten Code-Teile einfach kopieren und ans Ende von DetailPositionenOnBeforePrint
einfügen.
- Formatierungen für Sets und Zubehör
- Hier werden z.B. die Feld-Schrift-Styles geändert, wenn die Position einen Haupt-Set-Artikel oder -Zubehör-Artikel beinhaltet.
- Außerdem wird gezeigt, wie man die Bezeichnungs- und Text-Felder für Set-Positionen einrücken kann.
- Wichtig: Positionsangaben im Code werden in Pixeln gemacht! Damit man Pixel einfach in cm umrechnen kann, stellt FastReport eine Funktion namens
fr1cm
zur Verfügung. Die Umrechnung in cm wird mit einer Formel gemacht: - "xxx.Left := 1.3 * fr1cm;"
- Wichtig: Positionsangaben im Code werden in Pixeln gemacht! Damit man Pixel einfach in cm umrechnen kann, stellt FastReport eine Funktion namens
- Standard-Einstellungen
- Erst einmal werden alle Felder auf den Standard positioniert:
// Alle Schrift-Attribute erst mal auf den Standard setzen: MemoPositionenBezeichnung.Font.Style := 0; memoPosMengeAuftrag.Font.Style := 0; memoPosEinzelPreis.Font.Style := 0; memoPositionenRabattProz.Font.Style := 0; memoPosGesBetrag.Font.Style := 0; // Einrücken erst mal zurücksetzen: MemoPositionenBezeichnung.Left := 1.3 * fr1cm; MemoPositionenBezeichnung.Width := 9.2 * fr1cm; RichChildDetailPositionen.Left := 1.3 * fr1cm;
- Die cm-Angaben (1.3 und 9.2) müssten Sie u.U. an Ihre Positionen anpassen, wenn Sie die Felder verschoben haben!
- Bitte beachten: Kommstellen im Code werden mit dem Punkt angegeben!
- Set-Position
- werden eingerückt, also der Wert der Left-Eigenschaft der Felder wird verändert:
if ( <Positionen."SetNr"> > 0 ) and ( <Positionen."SetNrHauptArtikel"> = '' ) then begin MemoPositionenBezeichnung.Left := 2.3 * fr1cm; MemoPositionenBezeichnung.Width := 8.2 * fr1cm; RichChildDetailPositionen.Left := 2.3 * fr1cm; end;
- Alternativ dazu könnte man das Feld auch kursiv darstellen:
if ( <Positionen."SetNr"> > 0 ) and ( <Positionen."SetNrHauptArtikel"> = '' ) then begin memoPosBezeichnung.Font.Style := fsItalic; end;
- Zubehör-Hauptartikel
- Könnten z.B. in Fettschrift dargestellt werden:
if <Positionen."ZubehoerKennzch_1Haupt_2Unter"> = 1 then begin MemoPositionenBezeichnung.Font.Style := fsBold; memoPosMengeAuftrag.Font.Style := fsBold; memoPosEinzelPreis.Font.Style := fsBold; memoPositionenRabattProz.Font.Style := fsBold; memoPosGesBetrag.Font.Style := fsBold; end;
- Zubehör-Unterposition
- Könnten z.B. kursiv darstellen:
if <Positionen."ZubehoerKennzch_1Haupt_2Unter"> = 2 then begin MemoPositionenBezeichnung.Font.Style := fsItalic; memoPosMengeAuftrag.Font.Style := fsItalic; memoPosEinzelPreis.Font.Style := fsItalic; memoPositionenRabattProz.Font.Style := fsItalic; memoPosGesBetrag.Font.Style := fsItalic; end;
- Alternativ könnten die Felder auch eingerückt werden:
if <Positionen."ZubehoerKennzch_1Haupt_2Unter"> = 2 then begin MemoPositionenBezeichnung.Left := 2.3 * fr1cm; MemoPositionenBezeichnung.Width := 8.2 * fr1cm; RichChildDetailPositionen.Left := 2.3 * fr1cm; end;
Alternative Positionen im Angebot:
- Alternativ-Positionen werden mit einem "*" markiert und zusätzlich wird der Gesamtpreis grau gedruckt.
- Das geht dann in
PositionenGesBetragOnBeforePrint
z.B. so:
procedure PositionenGesBetragOnBeforePrint(Sender: TfrxComponent); begin // Alternativ-Position kennzeichnen: // (Nicht beim Kapitel, das auch das Alternativ-Kennzeichen hat!) if (<Positionen."Alternativ_0_1"> = 1) and (<Positionen."PosNr"> > 0 ) then memoPosGesBetrag.Font.Color := clWindowFrame else memoPosGesBetrag.Font.Color := clWindowText; end;
- Die Markierung mit "*"
- wird nur bei Alternativ-Positionen angezeigt:
procedure MemoAlternativSternOnBeforePrint(Sender: TfrxComponent); begin // Markierung mit " * " nur bei Alternativ-Position anzeigen // (und nicht beim Kapitel, das auch das Alternativ-Kennzeichen hat!) if (<Positionen."Alternativ_0_1"> = 1) and (<Positionen."PosNr"> > 0 ) then MemoAlternativStern.Visible := True else MemoAlternativStern.Visible := False; end;
3.4.6 Kapitel-Bezeichnung und -Summe im Gruppenfuss
Damit man die Kapitel-Bezeichnung und -Summe in einem Gruppenfuss ganz einfach darstellen kann, stellt das Druckprogramm in jeder Positionszeile (Tabelle "Positionen") die Felder KapitelSumme und KapitelBezeichnung zur Verfügung.
Diese Felder kann man einfach in ein Band "GruppenFuss" ("GroupFooter") ziehen.
Beispiel:
- Hier steht der Gruppenkopf (GroupHeader), in diesem Beispiel gelb unterlegt die Kapitel-Bezeichnung und der Kapitel-Betrag.
- Das sind die Positionen (DetailPositionen). Um dieses Band herum wurde ein Gruppenkopf und ein Gruppenfuss angelegt.
3.4.7 Sortieren von Positionen
Man kann die Sortierung (Reihenfolge) der Positionen recht einfach festlegen, indem man bestimmte Wörter in den Dateinamen des Reports verwendet.
Die Anwendung wird in diesem Video auf YouTube© erklärt.
Derzeit können folgende Schlüsselwörter verwendet werden: (Groß- und Kleinschreibung ist egal)
Wort | Sortierung |
---|---|
KapitelLagerort oder ChapterStorageLocation | Sortiert wird nach Kapiteln und innerhalb der Kapitel nach Artikel-Lagerorten. |
Kapitel oder Chapter oder Positionen oder Positions | Standardsortierung nach Kapiteln und innerhalb deren nach Positionsnummern. |
Lagerort oder StorageLocation | Sortiert nach Lagerorten (alphabetisch aufsteigend) und innerhalb deren nach Artikel-Typ. Bei dieser Sortierung werden die Kapitel-Positionen automatisch ausgeblendet! |
Artikelgruppe oder ItemGroup | Sortiert nach Artikel-Obergruppen, Gruppen und Untergruppen (alphabetisch aufsteigend) und innerhalb deren nach Artikelnummer. Bei dieser Sortierung werden die Kapitel-Positionen automatisch ausgeblendet! |
Wenn keines dieser Schlüsselworte im Dateinamen enthalten ist, wird nach Kapiteln und Positionsnummern sortiert.
- Hinweise
- Man benötigt die Version 101920 von GevitasFormPrint, um alle Sortierungen verwenden zu können.
- Wenn Sie eine weitere Sortierung verwenden wollen, können wir das gerne einbauen. Für Kunden mit einem Software-Wartungsvertrag ist das kostenlos.
3.5 Fuss: Summen, Zahlung, Text
In diesem Bereich werden die Summen, Zahlungskonditionen usw. angezeigt.
- Genau genommen, ist dieser Bereich Bestandteil der Positionen, weil er als Footer (Fuss) der Positionen definiert ist.
Hier stehen die Felder aus der Tabelle AuftragsFuss
3.5.1 Standard-Fusstext
Im Standard-Fusstext für Angebot, Auftrag und Rechnungen kann man auch Variablen für den/die Bearbeiter*in verwenden, die dann zur Laufzeit durch den Namen, Telefonnummer usw. ersetzt werden. (Ab Version 5.0)
Standard-Text werden vom Admin so festgelegt:
- Datei⇒Admin-Optionen⇒Programmparameter (REFLEX-Admin)
- ⇒Firmen-Einstellungen, Formulare, Reports"
- ⇒FirmenDaten, Formular-Texte, Report-Einstellungen
- ⇒Register "Standard-Formular-Texte"
- ⇒FirmenDaten, Formular-Texte, Report-Einstellungen
- ⇒Firmen-Einstellungen, Formulare, Reports"
Siehe auch REFLEX Programmparameter Formular-Texte.
Dort kann man z.B. anwählen "Angebot" + "Verkauf" + "Fuss" + "Sprache D" und dann den Text dafür festlegen. Mit den Links kann man Variablen einfügen, z.B.:
Mit freundlichen Grüßen i.A. <VORNAME> <NACHNAME> <FUNKTION> Beispiel-Team Tel.: <TELEFON> Mobil: <MOBIL> Fax: <TELEFAX> E-Mail: <EMAIL> Filiale: <FILIALE>
Damit die Variablen eingesetzt werden, muss man im Report das Feld "StandardTextMitVariablen" der Tabelle "StandardTextFuss" einfügen. Wenn man bisher das Feld "StandardText" verwendet und nun Variablen benutzen will, muss man den Feldname entsprechend auf "StandardTextMitVariablen" ändern.
3.5.2 Code
Der Code hier ist überschaubar und befindet sich im Ereignis FussPositionenOnBeforePrint
:
- Rabattfeld
- optional ausschalten:
// Kennzeichen 2 = Rabatt Ja/Nein if <AuftragsKopf."KENNZ2"> = 'Nein' then begin AuftrStatistikSummeRabatt.Visible:= False; MemoFooterGespreis.Visible:= False; end;
- Wenn kein Mehrwertsteuer angegeben ist
- Felder ausschalten:
// Ohne Mwst.: Mwst-Felder unterdrücken: if <AuftragsFuss."MwstBetrag"> = 0 then begin AuftragsFussMwstBetrag.Visible:= False; AuftragsFussMwstSatzProzent.Visible:= False; memoFussGesamtbetragText.Visible:= False; AuftragsFussGesamtBetragBrutto.Visible:= False; end;
- Hinweis
- Das Feld mit der Mehrwertsteuer zieht sich bis ganz nach rechts. Grund: Das Feld hat oben und unten einen Rahmen, der als Striche zwischen den Zeilen genutzt wird.
Alternative Positionen im Angebot:
In einem Angebot kann es alternative Positionen geben, die im Gesamtpreis nicht eingerechnet sind! Diese sollten irgendwie gekennzeichnet werden.
Im Standard-Formular werden diese Positionen mit einem "*" gekennzeichnet.
Im Fuss gibt es einen Hinweis, dass Alternativen im Angebot vorhanden sind. Dieser Hinweis soll natürlich nur erscheinen, wenn es im Angebot überhaupt Alternativ-Positionen gibt.
Dazu stellt das Programm in der Tabelle AuftrStatistik
das Feld "AnzahlAlternativPos"
zur Verfügung.
Steht dort eine Zahl größer als 0, gibt es eine entsprechende Anzahl von Alternativ-Positionen im Angebot.
- Hinweis auf Alternativ-Positionen
- Dieser wird nur angezeigt, wenn die Anzahl der Alternativ-Positionen > 0 ist.
- Das Feld
AuftrStatistikAnzahlAlternativPos
wird sonst unterdrückt:
procedure AuftrStatistikAnzahlAlternativPosOnBeforePrint(Sender: TfrxComponent); begin // Hinweis aus Alternativ-Positionen: if <AuftrStatistik."AnzahlAlternativPos"> = 0 then AuftrStatistikAnzahlAlternativPos.Visible := False else AuftrStatistikAnzahlAlternativPos.Visible := True; end;
3.6 Fuss: Bereich nur für Angebot
Optional kann man einen Bereich (ein Band) einfügen, das nur für Angebote gelten soll, z.B. mit der Angebots-Bindefrist.
An das Angebot halten wir uns bis zum [AuftragsKopf."AngebotGueltigBis"] gebunden.
Im Code muss man nun festlegen, dass dieses Band nur für Anfragen und Angebote gedruckt werden soll:
// Nur für Angebote: if not ( <AuftragsKopf."StatusNr"> in [3,7,103,107] ) then ChildAngebotBindefrist.Visible:= False;
Der Status gibt an:
Status-Nr. | Auftrags-Status |
---|---|
3 | Angebot |
7 | Anfrage |
103 | Angebot im Archiv |
107 | Anfrage im Archiv |
4 Updates
Version | Datum | Beschreibung |
---|---|---|