Rechnungen als PDF ablegen...

4. April 2017 11:34

Hallo,

gibt es eine Möglichkeit die gebuchten Rechnungen (diese werden automatisch bei uns gedruckt) in einem Schritt direkt auch auf einem Netzlaufwerk abzulegen?

Viele Grüße
Mark Waldhoff

Re: Rechnungen als PDF ablegen...

4. April 2017 11:46

aus meiner Sicht nur mit einer Anpassung.

Re: Rechnungen als PDF ablegen...

4. April 2017 16:27

Wenn die schon als PDF abgelegt werden sollen, wäre die Einführung eines Archivsystems zu überlegen.

Von wegen: "revisionssichere Archivierung"

Re: Rechnungen als PDF ablegen...

4. April 2017 17:29

Hallo,

wenn du einen PDF- Drucker hast, der PDFs automatisch in einem bestimmten Verzeichnis ablegen kann (z.B. Broadgun, PDFCreator), dann kann das auch mit Bordmitteln funktionieren.

Der Standarddruck eines Beleges erlaubt die Angabe von mehr als einem Bericht, der z.B. beim Rechnungsdruck verwendet werden soll. Wenn du jetzt deinen Rechnungsbericht kopierst, dann kannst du diesen Bericht als zusätzlichen Bericht beim Rechnungsdruck eintragen. Diesen Bericht trägst du auch in der Druckerauswahl (Tabelle 78) ein, und verheiratest ihn mit dem PDF- Drucker. Da die Berichte ja automatisch gedruckt werden sollen, sollte es auch kein Problem mit einer doppelten Request- Page geben.

Damit hast du es jetzt erst einmal geschafft das eine PDF- Datei erstellt wird. Das ganze könnte jetzt noch einen Haken haben, nämlich den Dateinamen er PDF. Wie der erstellt wird, hängt vom PDF- Drucker ab, und könnte noch ein wenig Forschungsarbeit erfordern.
Alternativ kannst du einen PDF-Drucker wählen, der eingebettete Informationen beherrscht (bei Broadgun weiß ich das), mit denen du die PDF- Ausgabe steuern kannst. Das müsstest du aber im Berichtsdesign berücksichtigen.

Gruß Fiddi

Re: Rechnungen als PDF ablegen...

5. April 2017 08:36

Fiddi,

werden dann beim Druck auch aus 20 Rechnungen 20 PDF - sprich also Massendruck - denn das passiert eigentlich standardmäßig nicht - da wird eine PDF erzeugt, in der die 20 Rechnungen drin sind....was sicherlich nicht Sinn und Zweck ist

Re: Rechnungen als PDF ablegen...

5. April 2017 09:11

werden dann beim Druck auch aus 20 Rechnungen 20 PDF - sprich also Massendruck - denn das passiert eigentlich standardmäßig nicht - da wird eine PDF erzeugt, in der die 20 Rechnungen drin sind....was sicherlich nicht Sinn und Zweck ist

Das kommt drauf an, wie der automatische Job funktioniert. wenn der Mailen kann, dann wird er wahrscheinlich einzeln drucken.

Es muss kein Problem sein, die Ausdrucke als eine PDF zu archivieren. Das fördert die Übersichtlichkeit des Archivs. :wink:

Ich sagte außerdem, es "KANN" funktionieren. :mrgreen:

Gruß Fiddi

Re: Rechnungen als PDF ablegen...

5. April 2017 12:11

Also es geht auch ohne zusätzlichen PDF Drucker:

Grobes Konzept (Mal aus der alten Funktionskiste gekramt. Ich übernehme keine Haftung :D)

Funktion createPDF nimmt den Belegrecord auf, erstellt ein PDF und gibt den Serverpfad zurück.
Code:
CreatePDF(RecAsVariant : Variant) : Text
IF RecAsVariant.ISRECORD THEN
  RecRef.GETTABLE(RecAsVariant);
IF RecAsVariant.ISRECORDREF THEN
  RecRef := RecAsVariant;
RecRef.SETRECFILTER;

//Erstelle Temporäre Serverdatei
TempServerFileName := FileMngmt.ServerTempFileName(''); //FileMngmt=Codeunit419
TempServerFileName := FileMngmt.GetDirectoryName(TempServerFileName)+ '\' + GetDocumentCaption(RecRef) + '.pdf');

ReportID := GetDocumentReportID(RecRef);
REPORT.SAVEASPDF(ReportID, TempServerFileName, RecAsVariant);     

EXIT(TempServerFileName)



Unterfunktion um ordentlichen Dateinamen zu erhalten (Nur für Deutsch. Ich nutze für sowas lieber eine Einrichtungstabelle)
Habs auch nur für eine handvoll Belege getestet. Es wird sich aus der Tabellencaption und der RecordID die Belegart und Nr. zusammengebastelt. Nicht sooo schön, aber schön generisch :roll:
Andernfalls müsste man halt selbst die Namen anhand von RecRef.Number in einer Case Unterscheidung zurückgeben.
Code:
GetDocumentCaption(RecRef: RecordRef) : Text
DocType := RecRef.CAPTION;
DocType := COPYSTR(DocType,strpos(DocType,' ')+1);
TempDocNo := COPYSTR(FORMAT(RecRef.RECORDID),STRLEN(RecRef.NAME)+3);

IF STRPOS(TempDocNo,',') <> 0 THEN begin
  DocNo := SELECTSTR(2,TempDocNo);
  if strpos(DocType,'kopf') <> 0 then
    DocType := COPYSTR(DocType,1,strpos(DocType,'kopf')-1)+LOWERCASE(SELECTSTR(1,TempDocNo));
end else begin
  DocNo := TempDocNo;
  if strpos(DocType,'skopf') <> 0 then
    DocType := COPYSTR(DocType,1,strpos(DocType,'skopf')-1);
  if strpos(DocType,'kopf') <> 0 then
    DocType := COPYSTR(DocType,1,strpos(DocType,'kopf')-1)+'ung';
end;

exit(DocType + '_' + DocNo);


ReportID suchen (Mache ich auch eher über eine Einrichtungstabelle)
Muss sicher ergänzt werden. Wenn es mehrere ReportIDs zu ein und derselben Verwenung gibt, muss das hier auch angepasst werden und dann benötigt man eine Extention, welche PDFs zusammenführt.
Code:
GetDocumentReportID(RecRef: RecordRef) : Integer
CASE RecRef.NUMBER OF
  112 : UsageType := 'S.Invoice';      //Verkauf Geb. Rechnung
  122 : UsageType := 'P.Invoice';      //Einkauf Geb. Rechnung
  5992: UsageType := 'SM.Invoice';     //Verkauf Geb. Servicerechnung
  114 : UsageType := 'S.Cr.Memo';      //Verkauf Geb. Gutschrift
  124 : UsageType := 'P.Cr.Memo';      //Einkauf Geb. Gutschrift
  5994: UsageType := 'SM.Credit Memo'; //Verkauf Geb. Servicegutschrift
  297 : UsageType := 'Reminder';       //Mahnung
  ELSE
    ERROR('Keine ReportID gefunden!');
END;

ReportSel.SETFILTER(Usage,FORMAT(UsageType));  //ReportSel=Table77
ReportSel.SETFILTER("Report ID",'<>0');
IF ReportSel.FINDFIST THEN
  EXIT(ReportSel."Report ID")
ELSE
  ERROR('Keine ReportID gefunden!');

Re: Rechnungen als PDF ablegen...

5. April 2017 17:45

vandyke hat geschrieben:Also es geht auch ohne zusätzlichen PDF Drucker:

Grobes Konzept (Mal aus der alten Funktionskiste gekramt. Ich übernehme keine Haftung :D)



das es auch ohne zusätzlichen PDF-Drucker funktioniert, sollte eigentlich klar sein - denn dann sind wir wieder bei Anpassungen / Programmierung

PS: deine "alte Funktionskiste" habe ich auch so ähnlich :-D