/// <summary> /// Vraća sve greške iz XML dokumenta koji sadrži odgovor.</summary> /// <param name="dokument">XML dokument primljen kao odgovor iz CIS-a.</param> /// <returns> /// Vraća poruku greške (Pogledati poglavlje 2.4. Šifrarnik grešaka u Tehničkoj specifikaciji).</returns> public static string DohvatiGreskuRezultataZahtjeva(XmlDocument OdgovorGreska) { // prema sugestiji hebos: http://fiskalizacija.codeplex.com/workitem/672 XmlNamespaceManager nsmgr; TipDokumentaEnum tipDokumenta = XmlDokumenti.OdrediTipDokumenta(OdgovorGreska); XmlDokumenti.DodajNamespace(OdgovorGreska, out nsmgr); XmlElement root = OdgovorGreska.DocumentElement; XmlNode bodyNode = root.SelectSingleNode("soap:Body", nsmgr); XmlNode documentNode = null; if (bodyNode.HasChildNodes) { if (tipDokumenta == TipDokumentaEnum.EchoOdgovor) { documentNode = bodyNode.SelectSingleNode("tns:EchoResponse", nsmgr); } else if (tipDokumenta == TipDokumentaEnum.RacunOdgovor) { documentNode = bodyNode.SelectSingleNode("tns:RacunOdgovor", nsmgr); } else if (tipDokumenta == TipDokumentaEnum.PoslovniProstorOdgovor) { documentNode = bodyNode.SelectSingleNode("tns:PoslovniProstorOdgovor", nsmgr); } else if (tipDokumenta == TipDokumentaEnum.ProvjeraOdgovor) { documentNode = bodyNode.SelectSingleNode("tns:ProvjeraOdgovor", nsmgr); } } string ErrorCollection = ""; if (documentNode != null) { XmlNodeList ErrorList = documentNode.SelectNodes("tns:Greske", nsmgr); foreach (XmlNode NextError in ErrorList) { ErrorCollection += String.Format("{0} Šifra greške: {1}\n", NextError.FirstChild.SelectSingleNode("tns:PorukaGreske", nsmgr).InnerText, NextError.FirstChild.SelectSingleNode("tns:SifraGreske", nsmgr).InnerText); } return(ErrorCollection); } else { return("Nepoznata greška"); } }
/// <summary> /// Pomoćna metoda koja određuje tip XML dokumenta /// </summary> /// <param name="dokument">XML dokument prema XSD schemi, zajedno sa SOAP omotnicom</param> /// <returns>Tip dokumenta</returns> public static TipDokumentaEnum OdrediTipDokumenta(XmlDocument dokument) { TipDokumentaEnum tipDokumenta = TipDokumentaEnum.Nepoznato; if (dokument != null) { XmlNamespaceManager nsmgr; XmlDokumenti.DodajNamespace(dokument, out nsmgr); if (dokument.DocumentElement != null) { XmlElement root = dokument.DocumentElement; XmlNode node = root.SelectSingleNode("soap:Body", nsmgr); if (node != null && node.HasChildNodes) { switch (node.FirstChild.Name) { case "tns:EchoRequest": tipDokumenta = TipDokumentaEnum.EchoZahtjev; break; case "tns:EchoResponse": tipDokumenta = TipDokumentaEnum.EchoOdgovor; break; case "tns:RacunZahtjev": tipDokumenta = TipDokumentaEnum.RacunZahtjev; break; case "tns:RacunOdgovor": tipDokumenta = TipDokumentaEnum.RacunOdgovor; break; case "tns:PoslovniProstorZahtjev": tipDokumenta = TipDokumentaEnum.PoslovniProstorZahtjev; break; case "tns:PoslovniProstorOdgovor": tipDokumenta = TipDokumentaEnum.PoslovniProstorOdgovor; break; default: break; } } } } return(tipDokumenta); }
/// <summary> /// Vraća poruku greške iz XML dokumenta koji sadrži odgovor.</summary> /// <param name="dokument">XML dokument primljen kao odgovor iz CIS-a.</param> /// <param name="tipDokumenta">Tip dokumenta, npr. RacunOdgovor, PoslovniProstorOdgovor i sl.</param> /// <returns> /// Vraća poruku greške (Pogledati poglavlje 2.4. Šifrarnik grešaka u Tehničkoj specifikaciji).</returns> public static string DohvatiPorukuGreske(XmlDocument dokument, TipDokumentaEnum tipDokumenta) { string jir = ""; if (dokument != null) { XmlNamespaceManager nsmgr; DodajNamespace(dokument, out nsmgr); XmlElement root = dokument.DocumentElement; XmlNode node = root.SelectSingleNode(String.Format("soap:Body/tns:{0}/tns:Greske/tns:Greska/tns:PorukaGreske", tipDokumenta), nsmgr); if (node != null) { jir = node.InnerText; } } return(jir); }
/// <summary> /// Vraća UUID iz XML dokumenta.</summary> /// <param name="dokument">XML dokument prema XSD schemi zajedno sa SOAP omotnicom.</param> /// <param name="tipDokumenta">Tip dokumenta, npr. RacunZahtjev, RacunOdgovor i sl.</param> /// <returns> /// Vraća UUID.</returns> public static string DohvatiUuid(XmlDocument dokument, TipDokumentaEnum tipDokumenta) { string uuid = ""; if (dokument != null) { XmlNamespaceManager nsmgr; DodajNamespace(dokument, out nsmgr); XmlElement root = dokument.DocumentElement; XmlNode node = root.SelectSingleNode(String.Format("soap:Body/tns:{0}/tns:Zaglavlje/tns:IdPoruke", tipDokumenta), nsmgr); if (node != null) { uuid = node.InnerText; } } return(uuid); }