To jak można pobrać to UPO w PDF

0

Witajcie
Tak pobieram status sesji
https://ksef-test.mf.gov.pl/api/online/Session/Status/20231002-SE-E0393CB9F6-C21E5BF7FF-0E

A jak mam pobrać UPO w PDF takie są zapisy ...

%environment_path %/openapi/gtw/svc/api/KSeFcommon.yaml#/common/Upo/{ReferenceNumber}/{UpoReferenceNumber}
Usługa pozwala na pobranie UPO po kryteriach dostarczonych przez usługę (%environment_path
%/api/common/Status/{ReferenceNumber}).

Jak zamienić to na zapytanie np. dla POSTMANA

Co to jest ta sekcja common ?

Paweł

0

common to interfejs wspólny:https://ksef.mf.gov.pl/openapi/gtw/svc/api/KSeF-common.yaml. Wybierasz środowisko (test, demo prod) potem common/Upo/ i parametr. Jak dobrze kojarzę to dostaniesz XMLa - i gdzieś powinna być od niego transformata żeby przerobić na HTMLa którego będziesz mógł wydrukować do PDFa.

0
KsefIntegrator napisał(a):

common to interfejs wspólny:https://ksef.mf.gov.pl/openapi/gtw/svc/api/KSeF-common.yaml. Wybierasz środowisko (test, demo prod) potem common/Upo/ i parametr. Jak dobrze kojarzę to dostaniesz XMLa - i gdzieś powinna być od niego transformata żeby przerobić na HTMLa którego będziesz mógł wydrukować do PDFa.

Dzięki za podpowiedź
No tak a skąd wziąć {UpoReferenceNumber} bo pierwszy to numer sesji a to drugie to skąd ?
No dostajesz to zaszyfrowane z podpisem.
Jak to dekodować ?

Paweł

0
KsefIntegrator napisał(a):

common to interfejs wspólny:https://ksef.mf.gov.pl/openapi/gtw/svc/api/KSeF-common.yaml. Wybierasz środowisko (test, demo prod) potem common/Upo/ i parametr. Jak dobrze kojarzę to dostaniesz XMLa - i gdzieś powinna być od niego transformata żeby przerobić na HTMLa którego będziesz mógł wydrukować do PDFa.

https://ksef-test.mf.gov.pl/api/common/Status/20231110-SE-812060ACB2-56CB5F02B8-8E

Tak pobierasz UPO dla sesji ale to XML ... Nie spotkałem jak to zamienić na PDF. Klienci chcą PDF

0

Nie robiłem tego jeszcze ale w prezentacji twierdzą że gdzieś tam jest transformata XSLT do przekształcania XMLa na HTML którego można wydrukować.

0

@PK_64 przerobiłem plik .xslt, bodajże kolegi Dżyszla, ale nie pamiętam skąd dokładnie go pobrałem.
Wzorowałem się na tym link
Mój kod, a piszę to w VBA wygląda tak:

Sub TransformXMLToHTML()
    Dim xmlDoc As Object
    Dim xslDoc As Object
    Dim result As String
    Dim xmlFilePath As String
    Dim xslFilePath As String
    Dim htmlFilePath As String
    Dim sFileName As String

    On Error GoTo TransformXMLToHTML_Error


    ' Ścieżki do plików XML i XSL
    xmlFilePath = ThisWorkbook.Path & "\UPO_XML\UPO_dla_Fa_2_1.xml"
    xslFilePath = ThisWorkbook.Path & "\wizualizacja\UPO_v11dobre.xsl"
    sFileName = VBA.Mid$(xmlFilePath, VBA.InStrRev(xmlFilePath, "\") + 1)
    sFileName = VBA.Left$(sFileName, VBA.Len(sFileName) - 4)
    htmlFilePath = ThisWorkbook.Path & "\" & sFileName & ".html"

    ' Inicjalizacja obiektów MSXML
    Set xmlDoc = CreateObject("MSXML2.DOMDocument.6.0")
    Set xslDoc = CreateObject("MSXML2.DOMDocument.6.0")

    ' Załadowanie plików XML i XSL
    xmlDoc.async = False
    xmlDoc.resolveExternals = False
    xmlDoc.validateOnParse = False
    xmlDoc.Load xmlFilePath
    xslDoc.async = False
    xslDoc.resolveExternals = False
    xslDoc.validateOnParse = False
    xslDoc.Load xslFilePath

    ' Sprawdzenie, czy pliki zostały poprawnie załadowane
    If xmlDoc.parseError.ErrorCode <> 0 Then
        MsgBox "Błąd podczas ładowania pliku XML: " & xmlDoc.parseError.reason
        Exit Sub
    End If

    If xslDoc.parseError.ErrorCode <> 0 Then
        MsgBox "Błąd podczas ładowania pliku XSL: " & xslDoc.parseError.reason
        Exit Sub
    End If

    ' Transformacja XML przy użyciu XSLT
    result = xmlDoc.transformNode(xslDoc)

    ' Zapisanie wyniku do pliku HTML z kodowaniem UTF-8
    WriteStringToFileUTF8 htmlFilePath, result

    Debug.Print "Transformacja zakończona sukcesem. Plik HTML zapisany jako " & htmlFilePath

    ' Otworzenie pliku HTML w domyślnej przeglądarce
    Shell "cmd /c start """" """ & htmlFilePath & """", vbNormalFocus

    On Error GoTo 0
    Exit Sub

TransformXMLToHTML_Error:
    Debug.Print "Error " & Err.Number & " " & Err.Description & " w procedurze TransformXMLToHTML"
End Sub

Sub WriteStringToFileUTF8(filePath As String, content As String)
    Dim stream As Object
    Set stream = CreateObject("ADODB.Stream")
    stream.Type = 2    ' adTypeText
    stream.Charset = "utf-8"
    stream.Open
    stream.WriteText content
    stream.SaveToFile filePath, 2    ' adSaveCreateOverWrite
    stream.Close
End Sub

Po uruchomieniu otrzymuje plik HTML, który później już możesz sobie przerobić do PDF-a.
W załączniku pliki xsl i UPO pobrane z Ksefu.UPO_to_html.rar

Wiem że temat stary, ale może komuś się przyda.UPO_KSeF.rar

Zarejestruj się i dołącz do największej społeczności programistów w Polsce.

Otrzymaj wsparcie, dziel się wiedzą i rozwijaj swoje umiejętności z najlepszymi.