"AvERP-Designer für Fortgeschrittene".
Im Zusammenhang der allgegenwärtigen SEPA-Umstellung, bin ich auf folgende Aufgabe gestossen:
SEPA-Datei
erzeugen
Umsetzung "DTAUS-Lauf erstellen" nach "SEPA-Lauf erstellen"
Umsetzung "DTAUS-Lauf erstellen" nach "SEPA-Lauf erstellen"
AvERP-Anwender, die aktuell Ihre Eingangsrechnungen per DTAUS-Lauf an
ihr Zahlungsprogramm übergeben müssen im Rahmen der SEPA-Umstellung
auch dieses Verfahren ändern.
AvERP bietet in der Version 2014 ein Utiliity „SEPA-Export“
aufzurufen aus dem Zahlungsbuch.
Bisherige Nutzer des DTAUS-Laufs vermissen die Funktionalität
- Auswahl der Lieferanten-Rechnungen, die zur Zahlung anstehen
- Summe Zahlungenbeträge, zur Kontrolle von Limits ermitteln
- Druck Kontrollblatt zur Genehmigung der Zahlung durch den dafür Verantwortlichen
Der DTAUS-Lauf wird als Druck aus der Tabellenübersicht aufgerufen.
Mit Mehrfach-Selektion werden die an den DTAUS-Lauf zu übergebenden
Zahlungen markiert und später auf dem Kontrollzettel
gedruckt.
Genau diese Funktionalität sollte auch für den SEPA LAUF zur Verfügung stehen.
Der Kontrollzettel DTAUS ist im „alten“ FastReport2 aufgebaut.
Druck von solchen Reports aus der Tabellenübersicht wird von der AvERP-XE-Version nicht mehr unterstützt.
Deswegen die kleine Zusatzaufgabe den Druck Kontrollzettel mit FastReport4 – dem Neuen AvERP-Designer aufbauen.
Genau diese Funktionalität sollte auch für den SEPA LAUF zur Verfügung stehen.
Der Kontrollzettel DTAUS ist im „alten“ FastReport2 aufgebaut.
Druck von solchen Reports aus der Tabellenübersicht wird von der AvERP-XE-Version nicht mehr unterstützt.
Deswegen die kleine Zusatzaufgabe den Druck Kontrollzettel mit FastReport4 – dem Neuen AvERP-Designer aufbauen.
Hier werden die Eingangsrechnungen im Einkauf betrachtet. Aufruf erfolgt aus dem Zahlungsbuch.
Datensätze für SEPA-Export in der
Tabellenübersicht markieren und Drucken "SEPA-Export" auswählen.
Im Vorschalt-Dialog zum Drucken, wird der Dateipfad für die zu erzeugende XML-Datei erstellt.
Die aktuelle SEPA-Lauf-Nr, bestimmt.
Falle mehrere Firmenkonten mit IBAN und BIC versehen sind, das Firmenkonto auswählen.
Und die Summe der markierten Zahlunsgbeträge ausgegeben.
Die aktuelle SEPA-Lauf-Nr, bestimmt.
Falle mehrere Firmenkonten mit IBAN und BIC versehen sind, das Firmenkonto auswählen.
Und die Summe der markierten Zahlunsgbeträge ausgegeben.
Auf Druck "OK" wird im die SEPA-XML-Datei auf das Zielverzeichnis geschrieben und eine Kontroll-Liste gedruckt.
Übernommen aus dem DTAUS-Lauf, nur wenn tatsächlich auf einen Drucker ausgegeben erfolgt die
Frage: Können die markierten Daten als gezahlt markiert werden ?
Nach diesem Vorlauf einige Kleinigkeiten zum AvERP-Designer, die ich hier festhalte, weil ich sie mir sonst immer wieder mühseelig erarbeiten muß.
Beispiel manuelles Umsetzen FR2 nach FR4-Report:
Quelle
Zahlungsausgang - DTAUS erstellen FRDBZAHL_DTAUS
Ziel: Zahlausgang SEPA-Datei erstellen
mit nahezu ähnlicher Logik.
Deswegen die Maske-Logik in OnFormShow, AfterPrint erhalten, aber Report auf Fast-Report4 umstellen.
Deswegen die Maske-Logik in OnFormShow, AfterPrint erhalten, aber Report auf Fast-Report4 umstellen.
Folgender Trick funktioniert um den FR4-Designer zu aktivieren:
FR4 aktivieren über
FR4 aktivieren über
- Maske kopieren
- als FRDBZAHL_SEPA umbebenennen
- Editieren:
FRDBZAHL_SEPA die Eigenschaft
bNewFastRep = True geben. - Geänderte Ressource einlesen.
So sollte dann FRDBZAHL.res anfangen:
inherited FRDBZAHL_SEPA: TDBasisForm // DTAUS=>SEPA umbenennen
inherited FRDBZAHL_SEPA: TDBasisForm // DTAUS=>SEPA umbenennen
Left
= 0
Top
= 400
Width
= 471
Height
= 280
Caption
= 'FRDBZAHL_SEPA' //
DTAUS=>SEPA umbenennen
OldCreateOrder
= True
bFormShow
= True
bNewFastRep
= True // Zeile im Editor hinzufügen
Nächster Schritt mit AvERP-Designer ObjectInspector
aus DTA-Dateiname mach SEPA-Nummer:
aus DTA-Dateiname mach SEPA-Nummer:
Umbennen
im DTA nach SEPA: im DM1-Modus anklicken,
Direkt Caption ändern.
Direkt Caption ändern.
Vorlage Seite 2 aus den DTAUS-Lauf:
Umsetzen zu
Stattwie in FR2
Datenquelle fr_rep1 und Feldaliase q_rep1 zu exportieren
reicht es Dataset frx_rep01 auszuwählen.
reicht es Dataset frx_rep01 auszuwählen.
Korrespondierende
Bänder:
Seite 1 Begleitzettel entfällt
Seitenkopf PageHeader
Hauptdaten Masterdaten
(DataSet frx_rep01
Anzahl Datensätze 0)
(DataSet frx_rep01
Anzahl Datensätze 0)
Hauptfuß Footer
Variablen
DTAUSNR, FIRMA_BANKNAME und FIRMA_KTO exportieren
Variablen-Gruppe
hinzufügen
Hier
sReport benannt – Benennung kann beliebig sein.
Export Report
Variablen im ButtonOkOnClick-Script:
festen Namen sReportVariablen verwenden.
Zussammenhängenden in „Doppelte Hoch-Komma“ geklammerten String
im Stil VARIABLE=<Wert>, Komma als Trenner in Variablen ,<Wert> Liste
festen Namen sReportVariablen verwenden.
Zussammenhängenden in „Doppelte Hoch-Komma“ geklammerten String
im Stil VARIABLE=<Wert>, Komma als Trenner in Variablen ,<Wert> Liste
ReportVariablen
:= '"FIRMA_KTO=' + sFIRMA_KTO + '",' +
'"FIRMA_BANKNAME='
+ sFIRMA_BANKNAME + '",' +
'"DTAUSNR='
+ LB_DTAUSNR.Caption + '"';
Hier
werden die Variablen FIRMAT_KTO, FIRMA_BAMKNAME, DTAUSNR on den
Report übergebenn.
Verwendung
im FR4-Designer:
MemoFeld mit Inhalt [DTAUSNR] (in eckigen [] Klammern druckt den Inhalt der Reportvariablen DTAUSNR.
MemoFeld mit Inhalt [DTAUSNR] (in eckigen [] Klammern druckt den Inhalt der Reportvariablen DTAUSNR.
meBetrag
Zusammengesetztes Memofeld im Code zum OnBeforePrint-Ereignis
MeBetragOnBeforePrint definieren.
procedure meBetragOnBeforePrint(Sender:
TfrxComponent);
var s1,s2 : String;
begin
meBetrag.memo.Clear;
s2 := '';
s1 :=
FormatFloat('###,###,##0.00',<frx_rep01."ENDBETRAG">);
if (trim(<frx_rep01."ZDATUM">)
<> '') then
s2 :=
FormatDateTime('dd.mm.yyyy',<frx_rep01."ZDATUM">);
meBetrag.memo.add(s1);
meBetrag.memo.add(' ');
meBetrag.memo.add(s2);
end;
begin {hier der gesamte Code-zum
Report FRDBZAHL_SEPA
mehr braucht es Nicht!}
end.
Zubeachten
in FR4
Variablen vereinbaren !
Auf Objekt qualifiziert zugreifen mit z.B. meBetrag.memo
Alternativ Block with <Objekt>, Engine do
Variablen vereinbaren !
Auf Objekt qualifiziert zugreifen mit z.B. meBetrag.memo
Alternativ Block with <Objekt>, Engine do
with
meBetrag, Engine do
begin
memo.Clear;
memo.add(s1);
'
end;
statt eckigen [] spitze <>Klammern verwenden.
Statt [q_rep1.“ENDBETRAG“] <frx_rep01."ENDBETRAG"> verwenden.
begin
memo.Clear;
memo.add(s1);
'
end;
statt eckigen [] spitze <>Klammern verwenden.
Statt [q_rep1.“ENDBETRAG“] <frx_rep01."ENDBETRAG"> verwenden.
Str([q_rep1.“ZDATUM“) <> '' führt zu
Syntax-Fehler
(trim(<frx_rep01."ZDATUM">) <> '' hat die gleiche Wirkung.
(trim(<frx_rep01."ZDATUM">) <> '' hat die gleiche Wirkung.
Hier zum Vergleich das Script in FR2-Syntax:
Keine Kommentare:
Kommentar veröffentlichen