ebInterface: der österreichische XML Rechnungsstandard

Bild Microsoft Dynamics NAV 2009 (aka "NAV 6")
Forumsregeln
Impressum • Community-Knigge • Nutzungsbedingungen • Datenschutzrichtlinie

Bitte unbedingt angeben, ob sich eure Frage auf den RoleTailored-Client (RTC) oder den Classic-Client (CC) bezieht!

ebInterface: der österreichische XML Rechnungsstandard

Beitragvon JoergR » 6. Dezember 2013 13:01

Hallo zusammen.

Ich muss mich kurzfristig mit der Implementierung einer NAV Lösung für den ebInterface Standard in Österreich beschäftigen. Ich bin gerade dabei mich in das Thema einzulesen - es ist nicht ganz so trivial und muss anscheinend ab 1.1.14 gesetzlich umgesetzt sein.

Meine Frage wäre, hat hier jemand schon eine NAV Implementierung für das XML File, dessen Übertragung und würde die Lösung teilen? Oder den Lösungsweg skizzieren?

Viele GrĂĽĂźe,
Jörg
mfg,
Jörg
JoergR
 
Beiträge: 156
Registriert: 7. Oktober 2011 08:32
Arbeitsort: NĂĽrnberg
Bezug zu Microsoft Dynamics: End-Anwender
Microsoft Dynamics Produkt: Microsoft Dynamics NAV

Re: ebInterface: der österreichische XML Rechnungsstandard

Beitragvon scan » 7. Dezember 2013 12:45

Also verpflichtend sind meiner Meinung nach nur die Rechnungen an den Bund ab 01.01.14 elektronisch zu ĂĽbermitteln. Gute Infos dazu gibt es hier:
https://www.erb.gv.at/

Man findet auf dieser Seite genaue Formatbeschreibungen, es gibt ein Forum und man kann Dateien testweise hochladen.

Ich muss die Funktionalität "Rechnungen an den Bund" auch gerade bei einem Kunden umsetzen. Unser Weg ist es, das XML in Navision zu erzeugen und dann mittels eines externen .net Programmes (läuft als Service) hochzuladen. Sprich beim Rechnungsdruck wird das XML erzeugt und in ein definiertes Verzeichnis gestellt. Der Service überwacht dieses Verzeichnis und lädt die Datei dann hoch.

GrĂĽsse

scan
Benutzeravatar
scan
 
Beiträge: 33
Registriert: 21. Februar 2008 10:00

Re: ebInterface: der österreichische XML Rechnungsstandard

Beitragvon JoergR » 9. Dezember 2013 10:31

Wir werden die Rechnungen erst einmal manuell uploaden. Der Ansatz mit dem Webservice der das Verzeichnis abgrast klingt gut, werde ich mal so avisieren.
mfg,
Jörg
JoergR
 
Beiträge: 156
Registriert: 7. Oktober 2011 08:32
Arbeitsort: NĂĽrnberg
Bezug zu Microsoft Dynamics: End-Anwender
Microsoft Dynamics Produkt: Microsoft Dynamics NAV

Re: ebInterface: der österreichische XML Rechnungsstandard

Beitragvon JoergR » 13. Dezember 2013 12:33

Zwischenstand hier:

mit einem XMLPort wird das nur schwer möglich sein. Der ebInterface Standard sieht leider keine leeren Elemente vor. XMLPorts erzeugen aber Elemente immer, sobald diese definiert sind, unabhängig vom Wert (z.b. <element />. Oder gibt es doch einen Weg?

Andernfalls man mĂĽsste nach dem Erzeugen das XML File nochmal mit einer XMLDoc Automation parsen und dann alle leeren Elemente entfernen.

Oder gleich ĂĽber eine automation Instanz erzeugen...
mfg,
Jörg
JoergR
 
Beiträge: 156
Registriert: 7. Oktober 2011 08:32
Arbeitsort: NĂĽrnberg
Bezug zu Microsoft Dynamics: End-Anwender
Microsoft Dynamics Produkt: Microsoft Dynamics NAV

Re: ebInterface: der österreichische XML Rechnungsstandard

Beitragvon Kowa » 13. Dezember 2013 13:10

JoergR hat geschrieben:Oder gleich ĂĽber eine automation Instanz erzeugen...

Das ist wohl am sinnvollsten, zu leeren Elementen hatten wir hier auch schon mal ein Thema.
GruĂź, Kai

Frage beantwortet? Schreibe bitte [Gelöst] vor den Titel des ersten Beitrags.
Bitte erst suchen, dann fragen. Bitte beachte den kleinen Community-Knigge.
Kein Support per PN, Mail, Messenger oder Telefon! DafĂĽr ist dieses Forum da.

Download: Dynamics NAV Object Text Explorer (Alternativlink). MVP Alumni
Benutzeravatar
Kowa
Moderator
Moderator
 
Beiträge: 7835
Registriert: 17. Juni 2005 17:32
Wohnort: Bremen
Realer Name: Kai Kowalewski
Arbeitsort: Osterholz-Scharmbeck
Bezug zu Microsoft Dynamics: Microsoft Partner
Microsoft Dynamics Produkt: Microsoft Dynamics 365
Microsoft Dynamics Version: BC, NAV 2018 bis Navision 2.01

Re: ebInterface: der österreichische XML Rechnungsstandard

Beitragvon JoergR » 13. Dezember 2013 13:24

Hier ist mein Ansatz. Ich mache es nun doch ĂĽber den XML Port da es einfacher zu lesen und zu verstehen ist. AnschlieĂźend wird das XML file nochmal bereinigt.

Achtung der code ist nur ein Entwurf aber es ist nun relativ darauf aufzubauen...ich muss es noch vervollständigen (Gutschriften, Einrichtungen)...
Dateianhänge
Transform.zip
(38.52 KiB) 43-mal heruntergeladen
mfg,
Jörg
JoergR
 
Beiträge: 156
Registriert: 7. Oktober 2011 08:32
Arbeitsort: NĂĽrnberg
Bezug zu Microsoft Dynamics: End-Anwender
Microsoft Dynamics Produkt: Microsoft Dynamics NAV

Re: ebInterface: der österreichische XML Rechnungsstandard

Beitragvon Raik Zobel » 21. November 2017 10:43

Hallo,

ich stand vor dem gleichen Problem und habe es folgendermaßen gelöst:

Nach dem Erstellen der XML Datei, wird diese Datei mit einer Funktion bereinigt.
Ich habe eine ganze Weile gebraucht, um eine passende XPath Expression zu finden. (Der String hinter SelectNodes). Denn ich wollte auch Knoten mit leeren Attributen entfernen. Da die ParentNodes mit einem Absatz stehen bleiben, war "normalize-space" die Lösung. Dazu kann ich auch den folgenden Onlinetester für XPath Expressions empfehlen: https://www.freeformatter.com/xpath-tester.html
Es werden also alle Knoten ausgewählt die keinen Inhalt haben. Damit Knoten ohne Inhalt, aber mit einem gefüllten Attribut nicht gelöscht werden, wird nochmal die gleiche Teilexpression mit (@*) verwendet.

Variablen:
Code: Alles auswählen
Name   DataType   Subtype   Length
XMLDocument   DotNet   System.Xml.XmlDocument.'System.Xml, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089'   
XMLNode   DotNet   System.Xml.XmlNode.'System.Xml, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089'   
XMLNodeList   DotNet   System.Xml.XmlNodeList.'System.Xml, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089'   
i   Integer      

Funktion:
Code: Alles auswählen
RemoveEmptyNodes(TempServerFile : Text)

XMLDocument := XMLDocument.XmlDocument();
XMLDocument.Load(TempServerFile);
XmlNodeList := XMLDocument.SelectNodes('//*[not(string-length(normalize-space())) and not(string-length(normalize-space(@*)))]');
for i := XmlNodeList.Count - 1 downto 0 do begin
  XmlNode := XmlNodeList.Item(i);
  XmlNode.ParentNode.RemoveChild(XmlNode);
end;

XMLDocument.Save(TempServerFile);


Meine XML Datei ist so von 61Kb auf 6Kb geschrumpft :mrgreen:

Beispiel (stark eingekĂĽrzt):

XML Alt
Code: Alles auswählen
<?xml version="1.0" encoding="UTF-16" standalone="no"?>
<ORDERS05>
  <IDOC BEGIN="">
    <EDI_DC40 SEGMENT="">
      <TABNAM>EDI_DC40</TABNAM>
      <MANDT />
      <DOCNUM>123456789</DOCNUM>
      <DOCREL />
    </EDI_DC40>
    <E1EDK01 SEGMENT="">
      <ACTION />
      <KZABS />
    </E1EDK01>
    <E1EDK14 SEGMENT="nicht löschen">
      <QUALF />
      <ORGID />
    </E1EDK14>
   </IDOC>
</ORDERS05>


XML Neu:
Code: Alles auswählen
<?xml version="1.0" encoding="UTF-16" standalone="no"?>
<ORDERS05>
  <IDOC BEGIN="">
    <EDI_DC40 SEGMENT="">
      <TABNAM>EDI_DC40</TABNAM>
      <DOCNUM>123456789</DOCNUM>
    </EDI_DC40>
    <E1EDK14 SEGMENT="nicht löschen">
    </E1EDK14>
   </IDOC>
</ORDERS05>
Benutzeravatar
Raik Zobel
 
Beiträge: 279
Registriert: 4. März 2013 13:43
Realer Name: Raik Zobel
Arbeitsort: Leipzig
Bezug zu Microsoft Dynamics: Microsoft Partner
Microsoft Dynamics Produkt: Microsoft Dynamics NAV
Microsoft Dynamics Version: 4.00SP3, 2013R2, 2016


ZurĂĽck zu NAV 2009

Wer ist online?

Mitglieder in diesem Forum: Unbekannter Spider und 1 Gast