public static Factura Create(string xmlFile, string mailMessageID, string pathTemp, List <string> nits) { Factura factura = null; XDocument xdoc = null; try { if (File.Exists(xmlFile)) { xdoc = XDocument.Load(xmlFile); //string rootName = xdoc.Root.Name.LocalName; string rootNamespaceName = xdoc.Root.Name.NamespaceName; switch (rootNamespaceName) { case V1_NAMESPACE: factura = new FacturaV1(); break; case V2A_NAMESPACE: factura = new FacturaV2A(); break; case CONTAINER_NAMESPACE: factura = new Contenedor(); break; default: factura = new FacturaRechazada("Namespace de la factura no identificado"); break; } if (factura.TipoFactura == VersionFactura.V1 || factura.TipoFactura == VersionFactura.V2A) { string rejectionMessage = string.Empty; if (!factura.GetDataFactura(xdoc, pathTemp, nits, out rejectionMessage)) { factura = factura.Rechazar(rejectionMessage); } } factura.MailMessageID = mailMessageID; return(factura); } else { throw new Exception($"El archivo: {xmlFile} no existe"); } } catch (Exception ex) { //factura = new FacturaRechazada($"{ex.Message}\n{ex.ToString()}"); //factura.MailMessageID = mailMessageID; //return factura; throw ex; } }
/// <summary> /// Mapea el objeto factura en una plantilla HTML /// </summary> /// <param name="plantilla">Ruta de la plantilla html a ser usada</param> /// <param name="factura">Factura a procesar</param> /// <param name="html">Ruta donde será guardada la factura en html</param> /// <param name="documentHTML"></param> public static void ParsearHtml(string plantilla, FacturaV2A factura, string html, HtmlAgilityPack.HtmlDocument documentHTML = null) { try { if (factura != null) { string nameFacturaHtml = !string.IsNullOrEmpty(factura.NumFactura) ? factura.NumFactura : "No valido"; string facturaHtml = html + nameFacturaHtml + ".html"; if (File.Exists(plantilla)) { if (!File.Exists(facturaHtml)) { File.Copy(plantilla, facturaHtml); } if (documentHTML == null) { documentHTML = new HtmlAgilityPack.HtmlDocument(); documentHTML.Load(facturaHtml); } ParsearHtml(facturaHtml, factura as FacturaV1, html, documentHTML); documentHTML.GetElementbyId("ordencompra").InnerHtml = factura.NumOrdenCompra; documentHTML.Save(facturaHtml); } else { throw new Exception($"El archivo {plantilla} no fue encontrado"); } } else { throw new Exception("La factura es nula"); } } catch (NullReferenceException nre) { throw nre; } catch (Exception ex) { //throw new Exception($"Se produjo un error parseando html: {ex.Message}"); throw ex; } }