Ladeliste/Packliste mit FastReport
Inhaltsverzeichnis
1 Allgemeines
Dieser Artikel beschreibt den Aufbau eines Standard-Reports für ein Ladeliste/Packliste mit FastReport.
Es wird Bezug genommen auf den Report Ladeliste_02_Artikelgruppen_Vxx.fr3, wobei das "xx" hier die Versionsnummer des Reports darstellt.
Allgemein benutzen wir den Begriff "Ladeliste". Firmen, die zwischen dem Vorgang des Packens und des Ladens unterscheiden, würden wohl eher den Begriff "Packliste" verwenden. Da diese aber in der Minderheit sind, verwenden wir den Begriff "Ladeliste".
Die Ladeliste kann man aus REFLEX heraus aufrufen, indem man in der Auftragsverwaltung oder im Lagerprogramm den Auftrag öffnet und auf Ladeliste klickt.
Es öffnet sich das Dialogfenster für den Druck der Ladeliste:
1.1 Formularname
Name des verwendeten Formular-Reports. Es werden alle Dateien mit der Endung ".fr3" angezeigt, die in dem Formular-Ordner "Ladeliste" liegen.
Um Bedienungsfehler zu vermeiden, kann man im Report-Namen bestimmte Begriffe unterbringen, die dem Programm "sagen", welche Sortierung benötigt wird. Beispiele:
- Wenn das Wort "Gruppe" im Reportnamen drin ist, erlaubt das Programm nur die Sortierung nach Artikelgruppen und stellt diese auch automatisch ein.
- Wenn das Wort "Kapitel" im Reportnamen drin ist, erlaubt das Programm nur die Sortierung nach Kapitel+Positionen und stellt diese auch automatisch ein.
1.2 Benutzer Drucker
Auswahl des gewünschten Druckers.
1.3 Optionen
- Kopien
- Hier kann man die Anzahl der Kopien wählen, die man drucken will. 1 Kopie = 1 Original + 1 Kopie, also 2 Ausdrucke.
- Seiten
- Ausserdem kann man angeben, dass man nur bestimmte Seiten drucken will, z.B. "1,3,5" oder "2-99".
- Beim Drucken als PFD speichern
- Wenn aktiviert, erzeugt das Programm beim drucken oder mailen eine PDF-Datei im festgelegten Ordner (siehe Programmparameter) und verknüpft diese Datei mit dem Auftrag und dem Kunden.
- Dateiname und Betreff werden vorgegeben, können jedcoh geändert werden.
1.4 Auftrag fixieren (Beim Drucken)
Wenn aktiviert, wird der Auftrag nach dem Drucken automatisch fixiert. Damit kann man keine Änderungen mehr im Auftrag vornehmen. Im Lager kann die Fixierung wieder aufgehoben werden.
Die Fixierung verhindert, dass in einem Auftrag nach dem Drucken der Ladeliste Änderungen vorgenommen werden, von denen das Lager nicht mitbekommt!
1.5 Nur offene Positionen
Druckt nur Positionen, die nicht vollständig ausgegeben werden.
1.6 Nur Material-Positionen
Druckt nur Positionen mit Miet- oder Verkaufsartikeln, keine Dienstleistungs-/Arbeitszeit-Positionen.
1.7 Sortieren nach
Legt die Sortierung (Reihenfolge) der Positionen fest.
- Bitte beachten Sie: Wenn im Report-Namen bestimmte Schlüsselworte enthalten sind (z.B. "Gruppe", "Kapitel"), dann wird die Sortierung automatisch festlegt und kann nicht geändert werden.
- Das ist unter bestimmten Umständen gewollt so und wird hier beschrieben.
2 Der Report in der Vorschau
Der Report sieht in der Vorschau so aus:
Erste Seite:
Diese Seite beinhaltet Kunden- und Auftragsdaten. Optional wird die Liefer-Anschrift und die Rückhol-Anschrift ausgegeben, aber nur, wenn es eine davon gibt!
Die nächsten Seiten:
Auf diesen Seiten stehen die eigentlichen Positionen, und zwar sortiert und gruppiert nach den Artikelgruppen Obergruppe, Gruppe und Untergruppe. Jede Oberguppe steht dabei auf einer eigenen Seite.
Am Ende des Reports
stehen die Summen des Gewichts und Volumens und einige Textfelder.
3 Der Report im ReportDesigner
Der Report dazu sieht folgendermaßen aus:
- Hinweis
- Da der Report mehr Bänder enthält als auf eine Seite passen, wurde die Seite im (für den) Entwurfsmodus vergrößert:
In diesen Bereichen stehen die Firmendaten, wie z.B. ein Firmenlogo oben und unten die Firmen-Informationen, Bankverbindungen usw. Diese Daten kommen jedoch nicht aus dem Report selbst, sondern aus einem Basis-Report, der in den Report-Optionen unter dem Reiter Vererbung festgelegt wurde. Weitere Informationen dazu finden Sie unter FastReport Vererbung/Basis-Report.
- Achtung!
- Wenn Sie einen Basis-Report verwenden, muss der Basis-Report im angegebenen Verzeichnis mit dem angegebenen Namen vorhanden sein!. Wenn Sie diese Datei verschieben oder umbenennen, laufen die Reports nicht mehr, die auf den Basis-Report Bezug nehmen!
3.2 Auftragskopf (MasterData)
Im Auftragskopf stehen die Kunden- und Veranstaltungsdaten sowie optional eine Lieferanschrift und Rückholanschrift. Diese Informationen werden in REFLEX im Auftragskopf unter Lieferdaten eingegeben.
3.3 Positionen (DetailData)
Im Positionsbereich stehen die Positionen des Auftrags, umgeben von Gruppen (Artikel-Obergruppe, -Gruppe und -Untergruppe), einer Überschrift und einem Fußbereich.
3.3.1 Mengen, Gewichte und Volumen
Das Programm stellt in der Tabelle Positionen diese Felder zur Verfügung:
- AusgabeMenge
- Die Ausgabemenge errechnet sich aus:
AuftragsMenge + Reservemenge - AktuellAusgegeben - WiederZurückGenommen
- GesamtBruttoGewichtMiete
- Errechnet aus
AusgabeMenge * Artikel-Bruttogewicht
- GesamtNettoGewichtMiete
- Errechnet aus
AusgabeMenge * Artikel-Nettogewicht
- GesamtBruttoGewichtVK
- Errechnet aus
AusgabeMenge * Artikel-Bruttogewicht-Verkauf
- GesamtNettoGewichtVK
- Errechnet aus
AusgabeMenge * Artikel-Nettogewicht-Verkauf
- GesamtVolumenMiete
- Errechnet aus
AusgabeMenge * Artikel-Volumen
- GesamtVolumenVK'
- Errechnet aus
AusgabeMenge * Artikel-Volumen-Verkauf
Man kann im Report auch auf die Gewichte/Volumen der Artikel zugreifen, ohne Berücksichtigung der Ausgabe-Menge. Die Felder heißen:
- AuftrPosBruttoGewichtMiete
- AuftrPosNettoGewichtMiete
- AuftrPosBruttoGewichtVK
- AuftrPosNettoGewichtVK
- AuftrPosVolumenMiete
- AuftrPosVolumenVK
Die oben schon beschriebenen Felder berücksichtigen die schon gebuchte Ausgabe-Menge:
- GesamtBruttoGewichtMiete
- GesamtNettttoGewichtMiete1)
- GesamtBruttoGewichtVK
- GesamtNettttoGewichtVK1)
- GesamtVolumenMiete
- GesamtVolumenVK
1) Der Entwickler entschuldigt sich für den Schreibfehler, der nun aus Kompatibilitätsgründen beibehalten werden muss.
- Lagerort
- Der Haupt-Lagerort des Artikels (nicht des Einzel-Artikels!)
3.4 Auftragsfuss
3.4.1 Gewichte und Volumen
Das Programm stellt in der Tabelle AuftrStatistik diese Summenfelder zur Verfügung:
- GesamtBruttoGewicht
- Beinhaltet die Summe des Bruttogewichts x der Ausgabemenge aller Artikel-Positionen des Auftrags.
- GesamtNettoGewicht
- Beinhaltet die Summe des Nettogewichts x der Ausgabemenge aller Artikel-Positionen des Auftrags.
- GesamtVerpackVolumen
- Beinhaltet die Summe des Verpackungs-Volumens x der Ausgabemenge aller Artikel-Positionen des Auftrags.
Die Ausgabemenge errechnet sich aus:
AuftragsMenge + Reservemenge - AktuellAusgegeben - WiederZurückGenommen
4 Gewichts- und Volumen-Berechnung mit Verpackungseinheit
4.1 Auftrags-Statistik-Felder
Das Programm stellt einige Felder zur Gewichtsberechnung bereit:
- [AuftrStatistik."GesamtBruttoGewichtMitVerpEinh"]
Dieses Feld beinhaltet das Gesamtgewicht des Auftrags unter Berücksichtigung der Artikel-Verpackungseinheiten. Dazu wird das Artikel-Verpackungsgewicht benutzt (ab Release 240223, vorher das Netto-Gewicht).
- Die Formel dazu
- sum( ( MART.BRUTTOGEWICHT / MART.VERP_EINHEIT ) * (MAUFPO.AUFTRMENGE + MAUFPO.RESERVEMENGE ) )
- Also:
- Summe aus ( ( Artikel-Brutto-Gewicht / Artikel-Verpackungseinheit ) * (Auftragsmenge + Reservemenge ) )
- [AuftrStatistik."GesamtBruttoVolumenMitVerpEinh"]
Dieses Feld beinhaltet das Gesamtvolumen des Auftrags unter Berücksichtigung der Artikel-Verpackungseinheiten. Dazu wird das Artikel-Verpackungsvolumen benutzt.
- Die Formel dazu
- sum( ( MART.VERP_VOLUMEN / MART.VERP_EINHEIT ) * (MAUFPO.AUFTRMENGE + MAUFPO.RESERVEMENGE ) )
- Also:
- Summe aus ( ( Artikel-Verpackungsvolumen / Artikel-Verpackungseinheit ) * (Auftragsmenge + Reservemenge ) )
4.2 Im Detail-Bereich mit den Positionen
Wenn man dort das Gewicht unter Berücksichtigung der Artikel-Verpackungseinheiten berechnen will, kann man zwei Variablen deklarieren und diese im Detail-Band berechnen:
- Beispiel
procedure DetailPositionenOnBeforePrint(Sender: TfrxComponent); begin // Dieser Code wird ausgeführt, BEVOR das Positionen-Detail-Band ausgegeben wird. // Gewicht der Position berechnen: if <Positionen."Artikel_VerpEinheit"> > 0 then begin Set( 'GewichtProPos', <Positionen."GesamtBruttoGewichtMiete"> / <Positionen."Artikel_VerpEinheit"> ); Set( 'VolumenProPos', <Positionen."GesamtVolumenMiete"> / <Positionen."Artikel_VerpEinheit"> ); end else begin Set( 'GewichtProPos',0 ); Set( 'VolumenProPos',0 ); End;
end;
- <Positionen."GesamtBruttoGewichtMiete">
- Dieses Feld beinhaltet die Formel Artikel-Bruttogewicht * (Auftragsmenge + Reservemenge).
- <Positionen."GesamtVolumenMiete">
- Dieses Feld beinhaltet die Formel Artikel-Verpackungsvolumen * (Auftragsmenge + Reservemenge).
4.3 Im Fuss
Im Fuss kann man zwei Funktionsfelder einfügen mit diesen Berechnungen:
[SUM(<GewichtProPos>,DetailPositionen,1)] [SUM(<VolumenProPos>,DetailPositionen,1)]
(",1" berechnet auch unsichtbare Bänder)