Übertragung der fertigen XML per VBA

  • Hallo

    Ich erstelle (ca. 50 Rechnungen monatlich) relativ schnell per VBA. Die XML-Dateien sind somit schon vorhanden, und werden seit mind. 2 Jahren per Dateiupload hochgeladen.
    Nun will ich aber auf Webservice umstellen.
    Leider hab ich da nichts gefunden, das mir weitergeholfen hat.

    natürlich will ich dies in der gleichen Software (MS Access) gleich in einem wischen hochladen.
    Hat hier jemand Codefragmente, mit denen ich die generierten XML-Dateien übertragen kann ?

    Es gibt ein Word Plugin, da sehe ich in der Beschreibung aber nur, wie ich dies ausfülle, ist dort der code für den Upload auch enthalten, sodaß ich diesen nutzen könnte ?

    Sollte es bereits eine Lösung/Beschreibung geben, dann sorry, habe trotz suche nichts gefunden.

    lg Roland

  • Hallo Roland,
    keine Ahnung wie das im Detail geht, aber im Thread eRechnung.gv.at Webservice-Einlieferung auf der Commandline siehst du wie man es "generisch" auf der Commandline macht.
    Wenn du es also schaffst die SOAP-Nachricht korrekt zusammen zu basteln, musst du "nur noch" einen HTTPS-Verbindung zu unserem Server aufbauen (Achtung: nur TLS 1.x und KEIN SSL v3), und es per HTTP POST rüberschicken. Die Antwort ist synchron wieder eine SOAP-Nachricht in der dann drin steht, ob es technisch okay war oder nicht.

    Fertiges Code-Snippet für VBA hab ich nicht.

    lg Philip

  • Hallo Philip

    Irgendwie komme ich nicht weiter.

    Ich habe aktuell:
    <env:Envelope xmlns:env="http://schemas.xmlsoap.org/soap/envelope/" xmlns:wsse="http://docs.oasis-open.org/wss/2004/01/oa…-secext-1.0.xsd"> <env:Header><wsse:Security><wsse:UsernameToken><wsse:Username>s000irgendwas</wsse:Username><wsse:Password>*habIch*</wsse:Password></wsse:UsernameToken></wsse:Security></env:Header><env:Body><erb:deliverInvoiceInvoiceInput xmlns:erb="http://erb.eproc.brz.gv.at/ws/invoicedelivery/201306/"><erb:Invoice encoding="UTF-8">PD9***Inhalt_gekürzt**I6SW52b2ljZT4=</erb:Invoice><erb:Settings test="true" language="de"/></erb:deliverInvoiceInvoiceInput></env:Body></env:Envelope>

    in einer wurscht als UTF-8 Datei.
    VBA Code, der mir das an https://txm.portal.at/at.gv.bmf.erb.test/V2 versucht hochzuladen
    Da bekomme ich als Antwort den Fehler 500 (heißt für mich, ich schaffe es dort anzudocken und etwas hinzuschicken)

    curl installiert, mit folgendem befehl:
    curl -H "Content-Type: text/xml; charset=utf-8" -X POST -d @ausgabe.txt -k http://txm.portal.at/at.gv.bmf.erb.test/V2
    bekomme ich einen timeout:
    curl: (7) Failed to connect to txm.portal.at port 80: Timed out

    Der angepinnte Thread ist aus 2013/2014, vielleicht gabs da inzwischen weitere Änderungen, die dort nicht mehr enthalten sind ?

    Gibt es auch die Möglichkeit eines direkten Teschnischen supports (per Mail oder so) ?

    lg Roland

  • Hallo

    So weit komme ich garnicht, ich versuche etwas an

    Code
    https://txm.portal.at/at.gv.bmf.erb.test/V2


    zu schicken, aber es wird hier schon mal nichts angenommen, ich bekomme als responseText das gleiche, wie wenn ich die URL im Browser aufrufe.

    Die eigentliche Authentifizierung erfolgt ja erst im XML Statement (zumindest steht dies so in der Anleitung)

    In einem anderen Projekt gebe ich noch ein paar Headerdaten beim Aufruf mit (Nicht erst im zu sendenden XML)

    Roland

  • Hallo,

    Okay, blöde Sache.
    1. Ist der XML-Header "<?xml version="1.0" encoding="utf-8"?>" enthalten und in einer eigenen Zeile?
    2. Die notwendigen HTTP-Header sind in dem referenzierten Thread enthalten:

    Content-Type: text/xml; charset=utf-8
    SOAPAction: "http://erb.eproc.brz.gv.at/ws/documentupl…DocumentRequest"

    (SOAP Action mit Quotes!)

    hth, P. Helger

  • Hallo

    so, mal wieder etwas zeit gehabt, ich komme weiter, bekomme nun folgende Fehelrinfo:

    HTML
    <SOAP-ENV:Fault><faultcode>Client.Authorization</faultcode><faultstring>Authorization Failure.</faultstring></SOAP-ENV:Fault>


    Die 2 Header sind gesetzt:


    Code
    sURL = "https://txm.portal.at/at.gv.bmf.erb.test/V2"
    With xmlHtp
        .Open "POST", sURL, False
        .setRequestHeader "Content-Type", "text/xml; charset=utf-8"
        .setRequestHeader "SOAPAction", "http://erb.eproc.brz.gv.at/ws/documentupload/20121205/wsupload/uploadDocumentRequest"
        .send upload
        antwort = .responseText
    End With


    den folgenden Code übermittle ich dann per send:



    Wo müsste die Authorisation rein, wenn nicht hier ?
    Die zugangsdaten sind aus der Bestätigung "Webservicekonto Zugangsdaten für Firma XXXXXXXXXXX"

    lg Roland

  • Hallo Roland,

    schaut gut aus bis auf 2 Dinge:
    1. Haben Sie die Freischaltung für das Test-Webservice? Siehe https://www.erechnung.gv.at/erb?locale=de_AT&p=tec_test_ws Abschnitt Test-Endpunkt|Voraussetzungen?
    2. De RequestHeader "SOAPAction" muss die Anführungszeichen enthalten. Leider weiß ich nicht wie man in VBA korrekt maskiert, aber sinngemäß hier mit einem Backslash maskiert: "\"http://erb.eproc.brz.gv.at/ws/documentupload/20121205/wsupload/uploadDocumentRequest\""


    hth und vg

    P. Helger

  • Hallo

    Ich habs mit und ohne den Anführungszeichen probiert, in beiden fällen bekomme ich die gleiche Fehlermeldung mit der Authentifikation.
    Werde per mail anfragen, da ich die Option der testrechnung bei der Webservicerechte Verwaltung garnicht habe.

    R.

    PS: in VBA kann ich Anführungszeichen entweder über den ansi-code chr(34) oder mit "" machen, am anfang vom String kommen da 3 Anführungszeichen direkt hintereinander zusammen. eine Maskierung wie in Java z.b. wäre mir nicht bekannt (habs aber auch noch nicht geprüft)

  • Hallo,

    wenn Sie den Test-Webservice nicht freigeschaltet haben, dann schicken Sie uns bitte ein Mail an support-erb@brz.gv.at damit wir die Einrichtung veranlassen können.
    Schicken Sie uns bitte entweder den Webservice-Benutzer für die Produktion (s000....) oder ihre KUR oder den exakten Firmenwortlaut wie er im USP angezeigt wird.

    vg P. Helger

  • Geschafft !!!

    Hab heute erstmalig über 60 Rechnungen in einen Schwung per Webservice übertragen (und per email bestätigt bekommen).
    Danke für die Hilfe, soll ich den VBAcode (sind mehrere teile/Module) hier veröffentlichen ??

    besten Dank nochmal für die viele Hilfe !!

    Roland

Jetzt mitmachen!

Sie haben noch kein Benutzerkonto auf unserer Seite? Registrieren Sie sich kostenlos und nehmen Sie an unserer Community teil!