|
|
Zeile 32: |
Zeile 32: |
| Diese Bereiche kommen aus dem [[REFLEX Standard-Basis-Report|Basis-Report]]. '''Änderungen''' sollten '''immer im Basis-Report''' vorgenommen werden, weil diese sich auf '''alle anderen Reports''' auswirken, die den Basis-Report verwenden! | | Diese Bereiche kommen aus dem [[REFLEX Standard-Basis-Report|Basis-Report]]. '''Änderungen''' sollten '''immer im Basis-Report''' vorgenommen werden, weil diese sich auf '''alle anderen Reports''' auswirken, die den Basis-Report verwenden! |
| | | |
− | | + | Die Bereiche im Kopf sind gleich wie unter [[REFLEX Standard-Report Lieferschein]] beschrieben. |
− | ==== Der Bereich ====
| |
− | | |
− | [[Datei:Standard_Lieferschein_02_PageHeader.png]]
| |
− | | |
− | | |
− | === [[Datei:2.png]] Lieferanschrift ===
| |
− | | |
− | Die Lieferanschrift 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.
| |
− | | |
− | | |
− | | |
− | === Der Kopf ===
| |
− | | |
− | Die folgenden Bereiche gehören alle zum Lieferscheinkopf.
| |
− | | |
− | 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.
| |
− | | |
− | [[Datei:Standard_Lieferschein_03_Kopf.png]] | |
− | | |
− | | |
− | | |
− | ==== [[Datei:3.png]] 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. [LieferscheinKopf."LieferscheinNr"] vom [Date]
| |
− | | |
− | | |
− | {| class="wikitable" style="text-align: left;"
| |
− | !Feld
| |
− | !Beschreibung
| |
− | |- valign="top"
| |
− | |<code>[Titel]</code>
| |
− | |Diese Variable wird vom Programm an den Report übergeben. Der Text dazu kommt aus den Programm-Parametern. [[REFLEX-Basic Formular-Titel|Weitere Informationen dazu]]
| |
− | |- valign="top"
| |
− | |<code>[LieferscheinKopf."LieferscheinNr"]</code>
| |
− | |Hier wird die Lieferscheinnummer ausgegeben.
| |
− | |- valign="top"
| |
− | |<code>[Date]</code>
| |
− | |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. [Lieferschein."LieferscheinNr"] vom [LieferscheinKopf."DruckDatum"]
| |
− | | |
− | |}
| |
− | | |
− | ;Hinweis:
| |
− | :Der Titel für die Folgeseiten wird über den Header der Positionen '''HeaderPositionen''' ausgegeben.
| |
− | | |
− | | |
− | | |
− | ==== [[Datei:6.png]] 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''':
| |
− | | |
− | <code>
| |
− | 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;
| |
− | </code>
| |
− | | |
− | (Eigentlich gehört dieser Bereich nicht zum Kopf sondern zum Header über den Positionen)
| |
− | | |
− | ==== [[Datei:5.png]] Auftragsdaten im Kopf ====
| |
− | | |
− | ===== 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''':
| |
− | | |
− | <code>
| |
− | 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;
| |
− | </code>
| |
− | | |
− | Wenn im Feld <code><AuftragsKopf."Bereich_1Verkauf_2Miete_3Mietverkauf"></code> (es heißt wirklich so!) 1 steht, ist es ein Verkaufs-Auftrag, bei 2 ein Miet-Auftrag, bei 3 ein Mietartikel-Verkaufen-Auftrag.
| |
− | | |
− | | |
− | | |
− | | |
− | | |
− | ===== 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.
| |
− | | |
− | | |
− | | |
− | ===== 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''':
| |
− | | |
− | <code>
| |
− | procedure MasterDataVARaumOnBeforePrint(Sender: TfrxComponent);
| |
− | begin
| |
− | // Wenn beide Felder leer sind: Ausblenden!
| |
− | if ( <AuftragsKopf."VA-OrtKurzname"> = '' ) and ( <AuftragsKopf."VA-Raum"> = '' ) then
| |
− | MasterDataVARaum.Visible := False;
| |
− | end;
| |
− | </code>
| |
− | | |
− | ;Hinweis
| |
− | :Der '''VA-Ort-Name''' wird im Auftragskopf unter dem '''VA-Ort''' optional angegeben.
| |
− | | |
− | | |
− | | |
− | ===== 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. '''[[REFLEX_Bedienungsanleitung_Stammdaten_Kontakte#Ansprechpartner_2|Weitere Informationen]]'''.
| |
− | | |
− | ;Ansprechnpartner Auftrag
| |
− | :Die Daten kommen aus den Personen-Stammdaten des Auftragsbearbeiters. '''[[REFLEX_Bedienungsanleitung_Stammdaten_Bearbeiter,_Personen,_Ressourcen,_Fahrzeuge|Weitere Informationen]]'''.
| |
− | | |
− | | |
− | | |
− | ==== [[Datei:5.png]] Standardtext, Text aus Kopf ====
| |
− | | |
− | Im Bereich '''MasterDataStandardTextKopf''' steht der Standard-Text, der in den Programmparametern für dieses Formular festgelegt wurde. '''[[FastReport:_Standard-Formular-Texte|Weitere Informationen]]'''.
| |
− | | |
| | | |
| | | |
| === [[Datei:7.png]] Positionen === | | === [[Datei:7.png]] 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! | + | Zentrales Band der Positionen ist das Band '''DetailPositionen'''. Es gehört zum Band-Typ '''DetailData''' mit den Daten aus der Tabelle '''LieferscheinPositionenSummiert'''. |
− | | |
− | 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 '''Footer''' ("FussPositionen"), in dem Unterschriften usw.stehen.
| |
− | | |
| | | |
| [[Datei:Standard_Lieferschein_04_Positionen.png]] | | [[Datei:Standard_Lieferschein_04_Positionen.png]] |
| | | |
| | | |
− | | + | In den DetailPositionen werden die '''eigentlichen Lieferschein-Positionen''' ausgegeben. |
− | ==== [[Datei:8.png]] 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:
| |
− | | |
− | <code>
| |
− | 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;
| |
− | </code>
| |
− | | |
− | '''[[FastReport_Gruppenkopf_unterdrücken,_wenn_keine_Daten_mehr_kommen|Weitere Hinweise dazu]]'''
| |
− | | |
− | | |
− | | |
− | | |
− | ==== 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:
| |
− | | |
− | <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;
| |
− | </code>
| |
− | | |
− | | |
− | | |
− | | |
− | ==== DetailPositionen ====
| |
− | | |
− | In diesem Bereich werden die '''eigentlichen Lieferschein-Positionen''' ausgegeben.
| |
| | | |
| In '''DetailPositionenOnBeforePrint''' gibt es einigen Code, der das Verhalten der Objekte dieses Bereiches beeinflusst. | | In '''DetailPositionenOnBeforePrint''' gibt es einigen Code, der das Verhalten der Objekte dieses Bereiches beeinflusst. |
− |
| |
− |
| |
− | procedure DetailPositionenOnBeforePrint(Sender: TfrxComponent);
| |
− | begin
| |
− | // Dieser Code wird ausgeführt, BEVOR das Positionen-Detail-Band
| |
− | // ausgegeben wird.
| |
− |
| |
− | // Formatierungen für Sets und Zubehör:
| |
− | // Dieser Code wird ausgeführt, BEVOR das Positionen-Detail-Band
| |
− | // ausgegeben wird. Hier werden z.B. die Feld-Schrift-Styles geändert,
| |
− | // wenn die Position einen Haupt-Set-Artikel oder -Zubehör-Artikel
| |
− | // beinhaltet.
| |
− | // Positionsangaben werden in Pixeln gemacht, die Umrechnung in cm wird
| |
− | // mit einer Formel gemacht: "xxx.Left := 1.3 * fr1cm;"
| |
− |
| |
− | // Einrücken:
| |
− | MemoPositionenBezeichnung.Left := 1.80 * fr1cm;
| |
− | MemoPositionenBezeichnung.Width := 15.6 * fr1cm;
| |
− |
| |
− | // Set-Position:
| |
− | if ( <Positionen."SetNr"> > 0 ) and ( <Positionen."SetNrHauptArtikel"> = '' ) then
| |
− | begin
| |
− | MemoPositionenBezeichnung.Left := 2.3 * fr1cm;
| |
− | MemoPositionenBezeichnung.Width := 8.2 * fr1cm;
| |
− | end;
| |
− |
| |
− | // Zubehör-Unterposition:
| |
− | if <Positionen."ZubehoerKennzch_1Haupt_2Unter"> = 2 then
| |
− | begin
| |
− | MemoPositionenBezeichnung.Left := 2.3 * fr1cm;
| |
− | MemoPositionenBezeichnung.Width := 8.2 * fr1cm;
| |
− | end;
| |
− | end;
| |
− |
| |
− |
| |
− | ;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 '''<code>fr1cm</code>''' zur Verfügung. Die Umrechnung in cm wird mit einer Formel gemacht:
| |
− | :*"xxx.Left := 1.3 * fr1cm;"
| |
− |
| |
− |
| |
− | === [[Datei:7.png]] Pakete ===
| |
− |
| |
− | In diesem Bereich werden Pakete angezeigt.
| |
| | | |
| | | |
Zeile 349: |
Zeile 51: |
| In diesem Bereich werden Einzelartikel-Daten angezeigt. | | In diesem Bereich werden Einzelartikel-Daten angezeigt. |
| | | |
− |
| |
− | === [[Datei:9.png]] Fuss ===
| |
− |
| |
− | In diesem Bereich werden Textfelder für die Unterschriften usw. angezeigt.
| |
− |
| |
− | * Genau genommen, ist dieser Bereich Bestandteil der Positionen, weil er als Footer (Fuss) der Positionen definiert ist.
| |
− |
| |
− | [[Datei:Standard_Lieferschein_05_Fuss.png]]
| |
− |
| |
− |
| |
− |
| |
− |
| |
− |
| |
− | == Updates ==
| |
− |
| |
− | {| class="wikitable" style="text-align: left;"
| |
− | !Version
| |
− | !Datum
| |
− | !Beschreibung
| |
− | |- valign="top"
| |
− | |
| |
− | |
| |
− | |
| |
− | |- valign="top"
| |
− | |
| |
− | |
| |
− | |
| |
− | |- valign="top"
| |
− | |
| |
− | |
| |
− | |
| |
− | |- valign="top"
| |
− | |
| |
− | |
| |
− | |
| |
− | |}
| |
| | | |
| | | |
In diesem Bereich werden Einzelartikel-Daten angezeigt.