eRechnung (ZUGFeRD) für Markant

KMoeser

Aktives Mitglied
Teammitglied
Hallo zusammen,

hat schon jemand was davon gehört, dass man der Markant-Gruppe jetzt auch gerne ZUGFeRD-Rechnungen senden kann?

Leider wollen die aber die ILN des Lieferanten, ILN des Marktes/Lieferanschrift und ILN der Zentrale mit in der XML aufgenommen bekommen.
Eine Prüfung der aktuellen "Standard-XML" ergab bei Markant:

1741951955271.png

Weiß da jemand schon mehr dazu?

Danke.
 
Wir haben einen automatisierten Rechnunungsversand entwickelt, welcher ein Zugferd PDF aus der Sage nach Ablage in weniger als 1 sek. abarbeitet unter Berücksichtigung von Mail Parametern aus dem Sage UI. Wir können dabei auch Veränderungen am eingebetteten XML vornehmen.
 
Ich habe gestern anhand der DCM PrintPrepareBelegZUGFeRDEmbeddedXml eine Anpassung für Markant durchgeführt. Aktuell durchläuft meine E-Rechnung nun die Markant-spezifische Validierung.
Da bei uns nur 1 Kunde über Markant abrechnet, habe ich die Änderungen fest codiert:

Code:
       private void PrintPrepareBelegZUGFeRDEmbeddedXml(IDcmContext context )
        {
            DcmContextBelegdruckZUGFeRD myContext = (DcmContextBelegdruckZUGFeRD)context;

            if (myContext.Beleg.A0Konto == "D1234")   // Füge GLNs ein
            {
                string prefix = "ram";
                string prefixNameSpace = Sagede.Shared.ZUGFeRD.CrossIndustryDocument.GetPrefixNameSpace(prefix);
                XmlNode myItem = myContext.ZUGFeRDEmbeddedXml.GetElementsByTagName("rsm:SupplyChainTradeTransaction")[0];
                foreach (XmlNode child1 in myItem.ChildNodes)
                {
                    if (child1.Name == "ram:ApplicableHeaderTradeAgreement")
                    {
                        foreach (XmlNode child in child1.ChildNodes)
                        {
                            if (child.Name == "ram:SellerTradeParty")
                            {
                                XmlElement gln = myContext.ZUGFeRDEmbeddedXml.CreateElement(prefix, "GlobalID", prefixNameSpace);
                                gln.SetAttribute("schemeID", "0088");
                                gln.InnerText = "XXXXXXXXXXXXXXXX";
                                XmlNode nodeID = child.ChildNodes[0];
                                child.InsertAfter(gln, nodeID);
                            }

                            if (child.Name == "ram:BuyerTradeParty")
                            {
                                XmlElement gln = myContext.ZUGFeRDEmbeddedXml.CreateElement(prefix, "GlobalID", prefixNameSpace);
                                gln.SetAttribute("schemeID", "0088");
                                gln.InnerText = "XXXXXXXXXXXXXXX";
                                XmlNode nodeID = child.ChildNodes[0];
                                child.InsertAfter(gln, nodeID);
                            }
                        }
                    }

                    if (child1.Name == "ram:ApplicableHeaderTradeDelivery")
                    {
                        foreach (XmlNode child in child1.ChildNodes)
                        {
                            if (child.Name == "ram:ShipToTradeParty")
                            {
                                XmlElement gln = myContext.ZUGFeRDEmbeddedXml.CreateElement(prefix, "GlobalID", prefixNameSpace);
                                gln.SetAttribute("schemeID", "0088");
                                gln.InnerText = "XXXXXXXXXXXXXXXXX";
                                XmlNode nodeID = child.ChildNodes[0];
                                child.InsertBefore(gln, nodeID);
                            }
                        }
                    }
                }
            }
        }

Vielleicht hilft der Code-Schnipsel ja dem ein oder anderen bei der individuellen Umsetzung.

Grüsse Mark
 
Zurück
Oben