protected void btnProcesar_Click(object sender, EventArgs e)
        {
            string path = HttpRuntime.AppDomainAppPath;

            if (XMLZipFile.HasFile)
            {
                try
                {
                    string myFileNameLocal = path + XMLZipFile.FileName;
                    XMLZipFile.SaveAs(path + XMLZipFile.FileName);
                    if (File.Exists(myFileNameLocal) && myFileNameLocal.Contains(".zip"))
                    {
                        lblSalida.Text = lblSalida.Text + "Procesando Archivo :" + myFileNameLocal + "\n";
                        ArchivosXML.Clear();
                        using (ZipFile zip = ZipFile.Read(myFileNameLocal))
                        {
                            int cont = 0;
                            foreach (ZipEntry entrada in zip)
                            {
                                XMLRow      nuevoElemento = new XMLRow();
                                Comprobante comprobante   = new Comprobante();
                                cont++;
                                string Xmlstring;
                                if (entrada.FileName.ToLower().Contains(".xml"))
                                {
                                    MemoryStream memory = new MemoryStream();
                                    entrada.Extract(memory);
                                    Xmlstring = Encoding.UTF8.GetString(memory.ToArray());
                                    // No tengo idea, pero la libreria le agrega un caracter al stream... hay que investigar
                                    Xmlstring = Xmlstring.Substring(1);
                                    nuevoElemento.XML_Nombre_Archivo = Path.GetFileName(entrada.FileName);
                                    var serializer = new XmlSerializer(typeof(Comprobante));
                                    try
                                    {
                                        using (TextReader lector = new StringReader(Xmlstring))
                                        {
                                            comprobante = (Comprobante)serializer.Deserialize(lector);
                                        }
                                        nuevoElemento.XML_RFC_Emisor   = comprobante.Emisor.rfc;
                                        nuevoElemento.XML_RFC_Receptor = comprobante.Receptor.rfc;
                                        nuevoElemento.XML_Total        = comprobante.total;
                                        nuevoElemento.XML_Esquema_CFDI = "Esquema Valido";
                                    }
                                    catch (Exception ex)
                                    {
                                        nuevoElemento.XML_Esquema_CFDI = "Esquema Invalido";
                                        nuevoElemento.XML_RFC_Emisor   = "";
                                        nuevoElemento.XML_RFC_Receptor = "";
                                        nuevoElemento.XML_Status       = "INVALIDO!!!";
                                        nuevoElemento.XML_Total        = 0.00m;
                                        nuevoElemento.XML_UUID         = "";
                                        lblSalida.Text = lblSalida.Text + "Error :" + ex.Message;
                                    }
                                    try
                                    {
                                        var xdoc         = XDocument.Parse(Xmlstring);
                                        var timbreFiscal = (from item in xdoc.Descendants()
                                                            where item.Name.LocalName == "TimbreFiscalDigital"
                                                            select item).First();
                                        TimbreFiscalDigital timbreXMLComplemento = new TimbreFiscalDigital();
                                        timbreXMLComplemento.FechaTimbrado    = Convert.ToDateTime(timbreFiscal.Attribute("FechaTimbrado").Value);
                                        timbreXMLComplemento.UUID             = timbreFiscal.Attribute("UUID").Value;
                                        timbreXMLComplemento.noCertificadoSAT = timbreFiscal.Attribute("noCertificadoSAT").Value;
                                        timbreXMLComplemento.selloCFD         = timbreFiscal.Attribute("selloCFD").Value;
                                        timbreXMLComplemento.selloSAT         = timbreFiscal.Attribute("selloSAT").Value;
                                        timbreXMLComplemento.version          = timbreFiscal.Attribute("version").Value;
                                        nuevoElemento.XML_UUID            = timbreXMLComplemento.UUID.ToLower();
                                        nuevoElemento.XML_Complemento_TFD = "Complemento Valido";
                                    }
                                    catch
                                    {
                                        nuevoElemento.XML_Complemento_TFD = "Complemento Invalido";
                                    }
                                    memory.Dispose();
                                    ArchivosXML.Add(nuevoElemento);
                                }
                            }
                            lblSalida.Text = lblSalida.Text + "Numero de XML en archivo ZIP:" + cont + "\n";
                        }
                    }
                    else
                    {
                        lblSalida.Text = lblSalida.Text + "El archivo no existe; o no es un archivo zip";
                    }
                }
                catch (Exception ex)
                {
                    lblSalida.Text = "Error : " + ex.Message;
                }
                procesar();
            }
        }
Beispiel #2
0
 protected void btnProcesar_Click(object sender, EventArgs e)
 {
     string path = HttpRuntime.AppDomainAppPath;
     if (XMLZipFile.HasFile)
     {
         try
         {
             string myFileNameLocal = path + XMLZipFile.FileName;
             XMLZipFile.SaveAs(path + XMLZipFile.FileName);
             if (File.Exists(myFileNameLocal) && myFileNameLocal.Contains(".zip"))
             {
                 lblSalida.Text = lblSalida.Text + "Procesando Archivo :"+myFileNameLocal+"\n";
                 ArchivosXML.Clear();
                 using (ZipFile zip = ZipFile.Read(myFileNameLocal))
                 {
                     int cont = 0;
                     foreach (ZipEntry entrada in zip)
                     {
                         XMLRow nuevoElemento = new XMLRow();
                         Comprobante comprobante = new Comprobante();
                         cont++;
                         string Xmlstring;
                         if (entrada.FileName.ToLower().Contains(".xml"))
                         {
                             MemoryStream memory = new MemoryStream();
                             entrada.Extract(memory);
                             Xmlstring = Encoding.UTF8.GetString(memory.ToArray());
                             // No tengo idea, pero la libreria le agrega un caracter al stream... hay que investigar
                             Xmlstring = Xmlstring.Substring(1);
                             nuevoElemento.XML_Nombre_Archivo = Path.GetFileName(entrada.FileName);
                             var serializer = new XmlSerializer(typeof(Comprobante));
                             try
                             {
                                 using (TextReader lector = new StringReader(Xmlstring))
                                 {
                                     comprobante = (Comprobante)serializer.Deserialize(lector);
                                 }
                                 nuevoElemento.XML_RFC_Emisor = comprobante.Emisor.rfc;
                                 nuevoElemento.XML_RFC_Receptor = comprobante.Receptor.rfc;
                                 nuevoElemento.XML_Total = comprobante.total;
                                 nuevoElemento.XML_Esquema_CFDI = "Esquema Valido";
                             }
                             catch (Exception ex)
                             {
                                 nuevoElemento.XML_Esquema_CFDI = "Esquema Invalido";
                                 nuevoElemento.XML_RFC_Emisor = "";
                                 nuevoElemento.XML_RFC_Receptor = "";
                                 nuevoElemento.XML_Status = "INVALIDO!!!";
                                 nuevoElemento.XML_Total = 0.00m;
                                 nuevoElemento.XML_UUID = "";
                                 lblSalida.Text = lblSalida.Text + "Error :" + ex.Message;
                             }
                             try
                             {
                                 var xdoc = XDocument.Parse(Xmlstring);
                                 var timbreFiscal = (from item in xdoc.Descendants()
                                                     where item.Name.LocalName == "TimbreFiscalDigital"
                                                     select item).First();
                                 TimbreFiscalDigital timbreXMLComplemento = new TimbreFiscalDigital();
                                 timbreXMLComplemento.FechaTimbrado = Convert.ToDateTime(timbreFiscal.Attribute("FechaTimbrado").Value);
                                 timbreXMLComplemento.UUID = timbreFiscal.Attribute("UUID").Value;
                                 timbreXMLComplemento.noCertificadoSAT = timbreFiscal.Attribute("noCertificadoSAT").Value;
                                 timbreXMLComplemento.selloCFD = timbreFiscal.Attribute("selloCFD").Value;
                                 timbreXMLComplemento.selloSAT = timbreFiscal.Attribute("selloSAT").Value;
                                 timbreXMLComplemento.version = timbreFiscal.Attribute("version").Value;
                                 nuevoElemento.XML_UUID = timbreXMLComplemento.UUID.ToLower();
                                 nuevoElemento.XML_Complemento_TFD = "Complemento Valido";
                             }
                             catch
                             {
                                 nuevoElemento.XML_Complemento_TFD = "Complemento Invalido";
                             }
                             memory.Dispose();
                             ArchivosXML.Add(nuevoElemento);
                         }
                     }
                     lblSalida.Text = lblSalida.Text + "Numero de XML en archivo ZIP:"+cont+"\n";
                 }
             }
             else
             {
                 lblSalida.Text = lblSalida.Text + "El archivo no existe; o no es un archivo zip";
             }
         }
         catch (Exception ex)
         {
             lblSalida.Text = "Error : " + ex.Message;
         }
         procesar();
     }
 }