[Gelöst] - Alternatives Rechnungslayout bzw. Report

18. Januar 2019 14:26

Grundsätzlich wird ja in der Berichtsauswahl festgelegt, welcher Report für den Druck einer Rechnung verwendet wird. Darüber hinaus kann man dem Debitor ein abweichendes Layout hinterlegen. Sobald dies erfolgt ist, wird für den betroffenen Debitoren dieser Report, bzw. dieses Layout verwendet.

Ich möchte aber nun anhand des Auftrages entscheiden, welcher Report/Layout für den Druck verwendet werden soll. Gibt es da eine einfache Lösung dazu?
Zuletzt geändert von rotsch am 21. Januar 2019 09:46, insgesamt 1-mal geändert.

Re: Alternatives Rechnungslayout

20. Januar 2019 22:30

Möglicherweise Dummy Debitoren am Verkaufsauftrag hinterlegen und dann beim Reportdruck den Dummy Debitor als Reportdruckvorlage misbrauchen.

Re: Alternatives Rechnungslayout

21. Januar 2019 08:31

Am einfachsten wäre es, sich in der Codeunit 229 Document-Print reinzuhängen.

Re: Alternatives Rechnungslayout

21. Januar 2019 09:11

Dank für eure Antworten

DanielF hat geschrieben:Möglicherweise Dummy Debitoren am Verkaufsauftrag hinterlegen und dann beim Reportdruck den Dummy Debitor als Reportdruckvorlage misbrauchen.

Das wäre ev. möglich, jedoch wäre der Eingriff in den Standard aus meiner Sicht zu gross. Am liebste wäre mir ein Event im Sinne von 'OnBeforePrintReport' oder so, bei dem ich einen komplett anderen Report wählen könnte

MarkusWeiland hat geschrieben:Am einfachsten wäre es, sich in der Codeunit 229 Document-Print reinzuhängen.

Diese CU wird leider nicht verwendet beim Druck von gebuchten VK-Rechnungen, daher kann ich hier die gewünschte Anpassung nicht vornehmen

Ich habe nun folgende Lösung gefunden, die ich mit 2 Zeilen Code in Tabelle 77 einbinden konnte (markiert mit @01)
Code:
IF TempReportSelections.FINDSET THEN
  REPEAT
    IF TempReportSelections."Custom Report Layout Code" <> '' THEN BEGIN
      ReportLayoutSelection.SetTempLayoutSelected(TempReportSelections."Custom Report Layout Code");
      TempNameValueBuffer.FINDSET;
      AccountNoFilter := GetAccountNoFilterForCustomReportLayout(TempReportSelections,TempNameValueBuffer,TableNo);
      GetFilteredRecordRef(RecRefToPrint,RecRef,AccountNoFieldNo,AccountNoFilter);
      RecVarToPrint := RecRefToPrint;
      cuSalesMgt.ChangeSalesInvoiceReport(TempReportSelections, RecordVariant);                                              // @01
      REPORT.RUNMODAL(TempReportSelections."Report ID",IsGUI,FALSE,RecVarToPrint);
      ReportLayoutSelection.SetTempLayoutSelected('');
    END ELSE BEGIN
      cuSalesMgt.ChangeSalesInvoiceReport(TempReportSelections, RecordVariant);                                              // @01
      REPORT.RUNMODAL(TempReportSelections."Report ID",IsGUI,FALSE,RecordVariant);
    END;
  UNTIL TempReportSelections.NEXT = 0;


Damit verzweige ich in eine eigene Codeunit und gebe dabei die TempReportSelection und den RecordVariant mit (der in meinem Beispiel den Record aus Tabelle 112 enthält). Nun kann ich feststellen, um welche gebuchte Rechung es sich handelt und je nachdem direkt die Report ID in TempReportSelection überschreiben. TempReportSelection ist eine temporäre Tabelle, sodass ich dabei nichts verstelle

Re: Alternatives Rechnungslayout

21. Januar 2019 09:16

Hallo,

das kommt ein wenig auf die Differenzen im Report-Layout an.
Man kann auch schon mal mehrere Layouts in einem Report RDLC unterbringen und per Variable steuern. Das macht aber nur dann Spass, wenn nicht jemand die Positionen der Felder ausgewürfelt hat.

Alternativ könntest du einen zweiten Report in Tabelle 77 eintragen, und über ein Flag im Auftrag steuerst du, ob sich der erste oder der zweite Report ohne Ausführung beenden.

Gruß Fiddi

Re: Alternatives Rechnungslayout

21. Januar 2019 09:45

fiddi hat geschrieben:... das kommt ein wenig auf die Differenzen im Report-Layout an ....


Ja, das mit dem Flag in der Bereichtsauswahl wäre auch eine Lösung, danke.