REFLEX Standard-Report Lieferschein summiert: Unterschied zwischen den Versionen

Aus GEVITAS
Wechseln zu: Navigation, Suche
(Vorschau)
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"
 
|
 
|
 
|
 
|}
 
  
  

Version vom 10. Juli 2018, 22:38 Uhr

1 Allgemeines

Der Report "Lieferschein_Standard_LieferscheinPosSummiert_V03.fr3" wird für den Druck eines Lieferschein aus dem Lager-Ausgabe-Programm heraus verwendet. Er unterscheidet im Design zwischen Miete und Verkauf.

Der Report führt die Lieferschein-Positionen summiert gleichen Lieferschein-Positionen (Artikeln) auf. Es werden nur die Kapitel und Positionen aufgeführt, in denen Material für den Lieferschein ausgegeben ist. Das Druckprogramm erkennt das automatisch anhand des Reports und stellt die Option "Sortieren nach" automatisch ein.!


1.1 Verzeichnis, Basis-Report

Der Report befindet sich im Formular-Verzeichnis "Lieferschein".

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

Die Auftragskennzeichen, die für Angebot/Auftrag/Rechnung benutzt werden, werden in diesem Report nicht verwendet.


2 Vorschau

In der Vorschau sieht das Formular so aus:

Standard LieferscheinSummiert 01 Vorschau.png

3 Bereiche

3.1 1.png 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!

Die Bereiche im Kopf sind gleich wie unter REFLEX Standard-Report Lieferschein beschrieben.


3.2 7.png Positionen

Zentrales Band der Positionen ist das Band DetailPositionen. Es gehört zum Band-Typ DetailData mit den Daten aus der Tabelle LieferscheinPositionenSummiert.

Standard Lieferschein 04 Positionen.png


In den DetailPositionen werden die eigentlichen Lieferschein-Positionen ausgegeben.

In DetailPositionenOnBeforePrint gibt es einigen Code, der das Verhalten der Objekte dieses Bereiches beeinflusst.


3.3 8.png Einzelartikel

In diesem Bereich werden Einzelartikel-Daten angezeigt.


4 Standard-Reports

5 Links