示例#1
0
        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;
            }
        }
示例#2
0
 /// <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;
     }
 }