using System.IO; using ComplianceNFs.Core.Entities; using ComplianceNFs.Core.Ports; namespace ComplianceNFs.Infrastructure.Parsers { // Placeholder: fill in actual XML parsing logic public class XmlParser : IXmlParser { public ParsedInvoice Parse(Stream xmlStream) { // Use System.Xml to parse known elements var doc = new System.Xml.XmlDocument(); doc.Load(xmlStream); var invoice = new ParsedInvoice { CnpjComp = doc.SelectSingleNode("//CNPJComp")?.InnerText, CnpjVend = doc.SelectSingleNode("//CNPJVend")?.InnerText, MontNF = decimal.TryParse(doc.SelectSingleNode("//MontNF")?.InnerText, out var mont) ? mont : 0, PrecNF = decimal.TryParse(doc.SelectSingleNode("//PrecNF")?.InnerText, out var prec) ? prec : 0, ValorSemImpostos = decimal.TryParse(doc.SelectSingleNode("//ValorSemImpostos")?.InnerText, out var vsi) ? vsi : 0, ValorFinalComImpostos = decimal.TryParse(doc.SelectSingleNode("//ValorFinalComImpostos")?.InnerText, out var vfi) ? vfi : 0, RsComp = doc.SelectSingleNode("//RsComp")?.InnerText, RsVend = doc.SelectSingleNode("//RsVend")?.InnerText, NumeroNF = doc.SelectSingleNode("//NumeroNF")?.InnerText, IcmsNF = decimal.TryParse(doc.SelectSingleNode("//IcmsNF")?.InnerText, out var icms) ? icms : 0, UfComp = doc.SelectSingleNode("//UfComp")?.InnerText, UfVend = doc.SelectSingleNode("//UfVend")?.InnerText }; return invoice; } } }