Mahnungsdruck und ReportAfterRender

lireiner

Mitglied
Teammitglied
Hallo,
das Event ReportAfterRender wird auch beim Mahnungsdruck ausggelöst.
Das ist Grundsätzlich gut, aber da beim Mahnungsdruck in ReportCaption weder Belegnummer noch Kunde mitgegeben wird, suche ich nach einer Möglichkeit an diese Daten heranzukommen.

Hat jemand eine Idee wie ich z.B. den Kunden der Mahnung herausbekomme.
Ich kann zwar eine ConnId ermitteln, aber in den tKHK Tabellen finde ich dazu keinen Eintrag?
Gruß Reiner
 
Hallo,

ich glaube die Mahnungen werden immer direkt aus den Tabellen gedruckt, also ohne eine tkhk-Tabelle.
Aus der Tabelle "KHKMWMahnungen" können sie mit der TANMahnung die Adresse ermitteln.
Aus den Positionen bekommen Sie die Kto-Nummer.
 
Ja, das wäre OK, aber wie komme ich an die MahnTAN heran wenn ich nur den
DcmContextReportAfterRender Context habe?
Ich kann dort leider nichts brauchbares finden auch nicht über NamedParameter, oder ich kenne den Namen nicht nach dem ich suchen muss.
Gruß Reiner
 
Hallo,

ich habs mir nochmal angeschaut. Wenn Sie einzelne Mahnungen z.B. aus der Sammelmappe drucken kommt ein entsprechender NamedParameter mit "rptTANMahnung".
Aus dem Stapel heraus wird mit der Mandanteneinstellung "Druck Korrespondenzformulare" auf "Standard" wird nur "rptTANMahnstapel" übergeben.
Jede Seite ggf. auch mehrere Seiten(kommt auf die OPs an) werden zusammen gedruckt. Wobei mehrere Kunden im Report drinne sein können.
Leider weiß ich nicht was Stimulsoft hier hergibt. Vielleicht könnte man die benötigten Infos direkt aus dem Report holen?
Bei der erweiterten Druckersteuerung ist es genau so.
Hab gerade noch festgestellt, das er für Sprache im Mahnstapel einen Report ausgibt.
 
Hallo,

leider bekommen ich da nichts heraus ;-(.
Mein Vorgehen,
Druck aus dem Mahnstapel (bei mir ist an einem Eintrag nur eine Mahnung drin, es können natürlich auch viele sein).
Folgender Code wird Auschnittsweise in einer DCMListener Dll verwendet:

Code:
        Dim dcmCtxReportAfterRender As DcmContextReportAfterRender = CType(context, Sagede.OfficeLine.Engine.DcmContextReportAfterRender)
        Dim report As Stimulsoft.Report.StiReport = CType(dcmCtxReportAfterRender.Report, Stimulsoft.Report.StiReport)
        Dim StiSettings As New Stimulsoft.Report.Export.StiPdfExportSettings
        Dim objMandant As Mandant = dcmCtxReportAfterRender.Mandant
        Dim intMandant As Integer = dcmCtxReportAfterRender.Mandant.Id

        TraceLog.Logger.Information("RL-PrintPDF fcExpBerichtAlsPDF - ReportKey: " & CStr(dcmCtxReportAfterRender.ReportKey))
        Dim saSplitRepKey() As String = Split(dcmCtxReportAfterRender.ReportKey, ".")
        Dim ReportBez As String = saSplitRepKey(0)
        TraceLog.Logger.Information("RL-PrintPDF fcExpBerichtAlsPDF - ReportBez: " & ReportBez)

        StiSettings.EmbeddedFonts = True
        StiSettings.ImageQuality = 1
        StiSettings.ImageResolution = 100
        StiSettings.PdfACompliance = True

        'Dim belegContext As DcmContextReport = CType(context, DcmContextReport)
        'Dim ReportPart As Beleg = belegContext.ReportPart


        Try
            'Dim parameter As NamedParameters = DirectCast(dcmCtxReportAfterRender.Parameters, NamedParameters)
            Dim ReportName As String = report.ReportName
            sReportCaption = ConversionHelper.ToString(dcmCtxReportAfterRender.Parameters.FromName("$AccessCaption"))
            TraceLog.Logger.Information("RL-PrintPDF fcExpBerichtAlsPDF - ReportCaption: " & CStr(sReportCaption))
            Dim saSplitReportCaption() As String = Nothing
            Dim saSplitReportCaptionValue() As String = Nothing
            saSplitReportCaption = Split(sReportCaption, ";")
            saSplitReportCaptionValue = Split(saSplitReportCaption(1), "=")
            sReportCaption = saSplitReportCaptionValue(1)

            TraceLog.Logger.Information("RL-PrintPDF fcExpBerichtAlsPDF - Variante: " & CStr(ReportName))
            TraceLog.Logger.Information("RL-PrintPDF fcExpBerichtAlsPDF - ReportCaptionPart: " & CStr(sReportCaption))
            If ReportName = ReportBez Then
                ReportName = sReportCaption
            End If

            lngConnID = 0
            lngConnID = objMandant.MultiUserServiceMain.ConnectionId
            lngMahnTAN = 0
            lngMahnTAN = ConversionHelper.ToInt32(dcmCtxReportAfterRender.Parameters.FromName("rptTANMahnung"))

            Dim fileName As String = Nothing
            fileName = ReportName & ".pdf"
            TraceLog.Logger.Information("RL-PrintPDF fcExpBerichtAlsPDF - FileName: " & fileName & " / ConnID: " & CStr(lngConnID) & " / MahnTAN: " & CStr(lngMahnTAN))

ACHTUNG es ist nur ein Teil der Sub, bei Bedarf kann ich auch die gesamte Sub einstellen.
Im TraceLog steht dann leider eine "0" nach / MahnTAN: 0 (letzte Zeile im Code).

Eventuell mal einen Codeausschnitt posten mit dem man die MahnTAN herausbekommt.
Gruß Reiner
 
Hallo,

das ist das Problem bei dem Mahnstapel. Dort werden mehrer Mahnungen in einen Report gedruckt.
Hier wird nur die Tan des Mahnstapels übergeben :"rptTANMahnstapel".
Das würde auch die fehlende Caption erklären.
 
Danke Jan,

naja, die Caption ist ja vorhanden, im eigentlichen Report steht als Caption nun mal nur "Mahnung " drauf, die bekommen ich auch sauber raus.
Beim VK Belegdruck ist das anders, dort steht z.B. "Direktrechnung 2018-100015" das genügt mir um den Beleg eindeutig zu identifizieren und eventuell noch Daten zu besorgen.
Ist leider bei der Mahnung nicht so.
Übrigens auch wenn zu einem Eintrag im Mahnstapel mehrere Mahnungen existieren sollten (was ja die Regel ist), wird ja jeweils nur eine gedruckt und im DCMListener wird jeweils die DCM für jeden einzelenen Report abgefangen.
Für jeden Mahnungsreport separat.
Aber Grundsätzlich ist es korrekt, das die TAN des Mahnstapels noch nicht weiterhilft.

Gruß Reiner
 
Hallo und ganz generell die Frage, kommt man über die DCM ReportAfterRender eigentlich überhaupt and die eigentlichen Beleginformationen ran?
Wichtig wäre natürlich z.B. die BelID oder die ConnID des gerade erzeugten Reports?
Ich stelle mich wohl zu Du... an, denke ich.

Ger auch schreiben das es ein doofe Frage ist, wenn das generell nicht möglich ist.

Gruß Reiner
 
Hallo,

am besten den dcmContext in den
Code:
Sagede.OfficeLine.Engine.DcmContextReportAfterRender
Dann die Parameters in
Code:
Sagede.Shared.RealTimeData.Common.NamedParameters
umwandeln.
Dort kannst du mit der Funktion "FromName" die Werte ermitteln.

Darin befindet sich die ConnID. Diese ist nur beim InfoDruck die gleiche wie
Code:
Mandant.MultiUserServiceMain.ConnectionId
.
Also am besten diese verwenden.
Die NamedParameters utnerscheiden sich glaube ich auch zwischen Einkaufsbelege, Verkaufsbelege, Produktion und Rewe.
 
Hallo Jan, vielen Dank!

Stimmt, ich habe es auch geschafft die BeleID darüber zu ermitteln (jedenfalls für den VK-Bereich).
Code:
Dim sBelID As String = ConversionHelper.ToString(dcmCtxReportAfterRender.Parameters.FromName("BelegHandle"))

Gruß Reiner
 
Zurück
Oben