Exemple #1
0
        public void creaXml()
        {
            empresa = empresa.getEmpresa();
            X509Certificate2 cert        = FuncionesComunes.obtenerCertificado(empresa.NomCertificado);
            string           xml         = string.Empty;
            String           fch_firmado = String.Format("{0:yyyyMMdd_HHmmss}", thisDay);

            xml = "<RespuestaDTE xmlns=\"http://www.sii.cl/SiiDte\" xmlns:ds=\"http://www.w3.org/2000/09/xmldsig#\" xmlns:xsi=\"http://www.w3.org/2001/XMLSchema-instance\" version=\"1.0\" xsi:schemaLocation=\"http://www.sii.cl/SiiDte RespuestaEnvioDTE_v10.xsd\">\n"
                  + "<Resultado ID=\"RecepcionEnvio\">\n"
                  + "<Caratula version=\"1.0\">"
                  + "<RutResponde>" + empresa.RutEmisor + "</RutResponde>"
                  + "<RutRecibe>88888888-8</RutRecibe>"
                  + "<IdRespuesta>1</IdRespuesta>"
                  + "<NroDetalles>2</NroDetalles>"
                  + "<TmstFirmaResp>2016-03-23T16:40:00</TmstFirmaResp>"
                  + "</Caratula>"
                  + "<RecepcionEnvio>"
                  + "<NmbEnvio>ENVIO_DTE_684852.xml</NmbEnvio>"//
                  + "<FchRecep>2014-12-04T16:39:00</FchRecep>"
                  + "<CodEnvio>1</CodEnvio>"
                  + "<EnvioDTEID>SetDoc</EnvioDTEID>"
                  + "<EstadoRecepEnv>0</EstadoRecepEnv>"
                  + "<RecepEnvGlosa>Envio Recibido Conforme</RecepEnvGlosa>"
                  + "<NroDTE>2</NroDTE>"
                  //Foreach
                  + "<RecepcionDTE>"
                  + "<TipoDTE>33</TipoDTE>"
                  + "<Folio>52099</Folio>" //TODO
                  + "<FchEmis>2016-08-26</FchEmis>"
                  + "<RUTEmisor>88888888-8</RUTEmisor>"
                  + "<RUTRecep>" + empresa.RutEmisor + "</RUTRecep>"
                  + "<MntTotal>2533</MntTotal>"
                  + "<EstadoRecepDTE>0</EstadoRecepDTE>"
                  + "<RecepDTEGlosa>DTE Aceptado OK</RecepDTEGlosa>"
                  + "</RecepcionDTE>"
                  //Fin Foreach
                  + "<RecepcionDTE>"
                  + "<TipoDTE>33</TipoDTE>"
                  + "<Folio>52100</Folio>"
                  + "<FchEmis>2013-06-21</FchEmis>"
                  + "<RUTEmisor>88888888-8</RUTEmisor>"
                  + "<RUTRecep>69507000-4</RUTRecep>"
                  + "<MntTotal>3723</MntTotal>"
                  + "<EstadoRecepDTE>3</EstadoRecepDTE>"
                  + "<RecepDTEGlosa>DTE No Recibido - Error RUT Receptor</RecepDTEGlosa>"
                  + "</RecepcionDTE>"
                  + "</RecepcionEnvio>"
                  + "</Resultado>"
                  + "</RespuestaDTE>";

            // firmo documento
            String xmlFirmado = firmador.firmarDocumento(xml, cert);
            //  xmlFirmado = "<?xml version=\"1.0\" encoding=\"ISO-8859-1\"?>\n" + xmlFirmado;
            String fileNameEnvio = @"C:\AdmToSii\file\xml\proveedores\respuestaDte\NombredeArchivo" + fch_firmado + "Firmado.xml";

            using (System.IO.StreamWriter file = new System.IO.StreamWriter(fileNameEnvio, false, Encoding.GetEncoding("ISO-8859-1")))
            {
                file.WriteLine(xmlFirmado);
            }
        }
Exemple #2
0
        public void creaXml()
        {
            empresa = empresa.getEmpresa();
            X509Certificate2 cert        = FuncionesComunes.obtenerCertificado(empresa.NomCertificado);
            string           xml         = string.Empty;
            String           fch_firmado = String.Format("{0:yyyyMMdd_HHmmss}", thisDay);

            xml =
                "<Recibo version=\"1.0\">\r\n"
                + "<DocumentoRecibo ID=\"T33\">\r\n"
                + "<TipoDoc>33</TipoDoc>\r\n"
                + "<Folio>52099</Folio>\r\n"
                + "<FchEmis>2016-08-26</FchEmis>\r\n"
                + "<RUTEmisor>88888888-8</RUTEmisor>\r\n"
                + "<RUTRecep>" + empresa.RutEmisor + "</RUTRecep>\r\n"
                + "<MntTotal>2533</MntTotal>\r\n" //TODO
                + "<Recinto>Bodega Central</Recinto>\r\n"
                + "<RutFirma>12891016-6</RutFirma>\r\n"
                + "<Declaracion>El acuse de recibo que se declara en este acto, de acuerdo a lo dispuesto en la letra b) del Art. 4, y la letra c) del Art. 5 de la Ley 19.983, acredita que la entrega de mercaderias o servicio(s) prestado(s) ha(n) sido recibido(s).</Declaracion>\r\n"
                + "<TmstFirmaRecibo>2015-03-31T11:00:00</TmstFirmaRecibo>\r\n"
                + "</DocumentoRecibo >\r\n"
                + "</Recibo>\r\n";

            String xmlMercaderia = firmador.firmarDocumento(xml, cert);


            string xmlMercaderiaFirmado = string.Empty;

            xmlMercaderiaFirmado = "<?xml version=\"1.0\" encoding=\"ISO-8859-1\"?>\r\n" +
                                   "<EnvioRecibos xmlns=\"http://www.sii.cl/SiiDte\" xmlns:ds=\"http://www.w3.org/2000/09/xmldsig#\" version=\"1.0\" xmlns:xsi=\"http://www.w3.org/2001/XMLSchema-instance\" xsi:schemaLocation=\"http://www.sii.cl/SiiDte file:///C:/schema_InterMerca/EnvioRecibos_v10.xsd\">\r\n" +
                                   "<SetRecibos ID=\"Recibo\">\r\n" +
                                   "<Caratula version=\"1.0\">\r\n" +
                                   "<RutResponde>" + empresa.RutEmisor + "</RutResponde>\r\n" +
                                   "<RutRecibe>88888888-8</RutRecibe>\r\n" +
                                   "<TmstFirmaEnv>2016-03-25T10:50:00</TmstFirmaEnv>\r\n" +
                                   "</Caratula>\r\n" +
                                   xmlMercaderia +
                                   "</SetRecibos></EnvioRecibos>\r\n";

            String xmlFirmado = firmador.firmarDocumento(xmlMercaderiaFirmado, cert);

            xmlFirmado = "<?xml version=\"1.0\" encoding=\"ISO-8859-1\"?>\r\n" + xmlFirmado;
            String fileNameEnvio = @"C:\AdmToSii\file\xml\proveedores\respuestaDte\NombredeArchivo" + fch_firmado + "Firmado.xml";

            using (System.IO.StreamWriter file = new System.IO.StreamWriter(fileNameEnvio, false, Encoding.GetEncoding("ISO-8859-1")))
            {
                file.WriteLine(xmlFirmado);
            }
        }
Exemple #3
0
        public String firmaNodoDD(String DD, int tipoDte, string rut)
        {
            string pk = getXmlFolio("RSA", tipoDte, rut);

            Encoding ByteConverter = Encoding.GetEncoding("ISO-8859-1");

            byte[] bytesStrDD = ByteConverter.GetBytes(DD);
            byte[] HashValue  = new SHA1CryptoServiceProvider().ComputeHash(bytesStrDD);

            RSACryptoServiceProvider rsa = FuncionesComunes.crearRsaDesdePEM(pk);

            byte[] bytesSing = rsa.SignHash(HashValue, "SHA1");

            string FRMT1 = Convert.ToBase64String(bytesSing);

            return(FRMT1);
        }
Exemple #4
0
        public void reimp(DocumentoModel docLectura, String xmlFilename, String impresora)
        {
            FuncionesComunes ted        = new FuncionesComunes();
            String           TimbreElec = ted.getTed(xmlFilename);

            Thermal thermal = new Thermal();

            thermal.doc = docLectura;
            thermal.dd  = TimbreElec;
            //
            PrintDocument pd = new PrintDocument();

            pd.DefaultPageSettings.PaperSize = new PaperSize("", 284, 1600);
            pd.PrintPage += new PrintPageEventHandler(thermal.OpenThermal);
            pd.PrinterSettings.PrinterName = impresora;
            Console.WriteLine(pd.ToString());
            pd.Print();
        }
Exemple #5
0
        public String doc_to_xmlSii(DocumentoModel doc, String TED, String fch)
        {
            String dte = "<DTE version=\"1.0\">\n" +
                         "<Documento ID=\"F" + doc.Folio + "T" + doc.TipoDTE + "\">\n";

            String tipodespacho = "<TipoDespacho>" + doc.TipoDespacho + "</TipoDespacho>\n";

            if (doc.TipoDespacho == 0)
            {
                tipodespacho = "";
            }

            String indtraslado = "<IndTraslado>" + doc.IndTraslado + "</IndTraslado>\n";

            if (doc.IndTraslado == 0)
            {
                indtraslado = "";
            }

            String encabezado = "<Encabezado>\n" +
                                "<IdDoc> \n" +
                                "<TipoDTE>" + doc.TipoDTE + "</TipoDTE>\n" +
                                "<Folio>" + doc.Folio + "</Folio> \n" +
                                "<FchEmis>" + doc.FchEmis + "</FchEmis>\n" +
                                tipodespacho +
                                indtraslado +
                                "</IdDoc>\n";


            String emisor = "<Emisor>\n" +
                            "<RUTEmisor>" + doc.RUTEmisor + "</RUTEmisor>\n" +
                            "<RznSoc>" + doc.RznSoc + "</RznSoc>\n" +
                            "<GiroEmis>" + doc.GiroEmis + "</GiroEmis>\n" +
                            "<Acteco>" + doc.Acteco + "</Acteco>\n" +
                            "<CdgSIISucur>" + doc.CdgSIISucur + "</CdgSIISucur>\n" +
                            "<DirOrigen>" + doc.DirOrigen + "</DirOrigen>\n" +
                            "<CmnaOrigen>" + doc.CmnaOrigen + "</CmnaOrigen>\n" +
                            "<CiudadOrigen>" + doc.CiudadOrigen + "</CiudadOrigen>\n" +
                            "</Emisor>\n";
            //limita el largo de giro receptor
            String giroreceptor = String.Empty;

            if (doc.GiroRecep.Length < 40)
            {
                giroreceptor = doc.GiroRecep;
            }
            else
            {
                giroreceptor = doc.GiroRecep.Substring(0, 40);
            }

            if (doc.DirRecep == " ")
            {
                Console.WriteLine("ERROR EN  DATOS DEL RECEPTOR");
                doc.DirRecep = "SIN DIRECCIÓN";
            }

            if (doc.CiudadRecep == " ")
            {
                Console.WriteLine("ERROR EN  DATOS DEL RECEPTOR");
                doc.CiudadRecep = bd.getDirLocal();
            }

            if (doc.CmnaRecep == " ")
            {
                Console.WriteLine("ERROR EN  DATOS DEL RECEPTOR");
                doc.CmnaRecep = bd.getDirLocal();
            }

            String rznsocrecep = doc.RznSocRecep.Replace("&", "&amp;");
            String rutrecep    = doc.RUTRecep.Replace("k", "K");
            String dirrecep    = doc.DirRecep.Replace("#", " ");
            String cmnarecep   = String.Empty;
            String ciudadrecep = String.Empty;

            if (doc.CmnaRecep.Length < 20)
            {
                cmnarecep = doc.CmnaRecep;
            }
            else
            {
                cmnarecep = doc.CmnaRecep.Substring(0, 20);
            }

            if (doc.CiudadRecep.Length < 20)
            {
                ciudadrecep = doc.CiudadRecep;
            }
            else
            {
                ciudadrecep = doc.CiudadRecep.Substring(0, 20);
            }

            String receptor = "<Receptor>\n" +
                              "<RUTRecep>" + rutrecep + "</RUTRecep>\n" +
                              "<RznSocRecep>" + rznsocrecep + "</RznSocRecep>\n" +
                              "<GiroRecep>" + giroreceptor + "</GiroRecep>\n" +
                              "<DirRecep>" + dirrecep + "</DirRecep>\n" +
                              "<CmnaRecep>" + cmnarecep + "</CmnaRecep>\n" +
                              "<CiudadRecep>" + ciudadrecep + "</CiudadRecep>\n" +
                              "</Receptor>\n";

            String impreten   = String.Empty;
            string impretenes = String.Empty;
            String ultipimp   = String.Empty;

            if (doc.imptoReten != null)
            {
                foreach (var imp in doc.imptoReten)
                {
                    if (ultipimp == imp.TipoImp && imp.TipoImp != "")
                    {
                        Environment.Exit(0);
                    }
                    Console.WriteLine("ERROR JSON: Impuesto Retención duplicado");
                    impreten = "<ImptoReten>\n" +
                               "<TipoImp>" + imp.TipoImp + "</TipoImp>\n" +
                               "<TasaImp>" + imp.TasaImp + "</TasaImp>\n" +
                               "<MontoImp>" + imp.MontoImp + "</MontoImp>\n" +
                               "</ImptoReten>\n";

                    if (imp.TipoImp == "" || imp.TipoImp == "0")
                    {
                        impreten = "";
                    }

                    impretenes += impreten;
                    ultipimp    = imp.TipoImp;
                }
            }



            String mntneto = "<MntNeto>" + doc.MntNeto + "</MntNeto>\n";

            if (doc.MntNeto == 0)
            {
                mntneto = "";
            }
            String mntexe = "<MntExe>" + doc.MntExe + "</MntExe>\n";

            if (doc.MntExe == 0)
            {
                mntexe = "";
            }
            String tasaiva = "<TasaIVA>" + doc.TasaIVA + "</TasaIVA>\n";

            if (doc.TasaIVA == 0)
            {
                tasaiva = "";
            }
            String iva = "<IVA>" + doc.IVA + "</IVA>\n";

            if (doc.IVA == 0)
            {
                iva = "";
            }

            String totales = "<Totales>\n" +
                             mntneto +
                             mntexe +
                             tasaiva +
                             iva +
                             impretenes +
                             "<MntTotal>" + doc.MntTotal + "</MntTotal>\n" +
                             "</Totales>\n";
            String finencabezado = "</Encabezado>\n";

            //arma encabezado en documento
            String documento = dte + encabezado + emisor + receptor + totales + finencabezado;


            // for para crear detalles y agregarlos al documento
            String detalle;
            String firstNmbItem = String.Empty;
            int    i            = 0;

            foreach (var det in doc.detalle)
            {
                String indexe = "<IndExe>" + det.IndExe + "</IndExe>\n";
                if (det.IndExe == "0" || det.IndExe == "")
                {
                    indexe = "";
                }

                String qtyitem = "<QtyItem>" + det.QtyItem + "</QtyItem>\n";
                if (det.QtyItem == 0)
                {
                    qtyitem = "";
                }

                String unmditem = "<UnmdItem>" + det.UnmdItem + "</UnmdItem>\n";
                if (det.UnmdItem == "")
                {
                    unmditem = "";
                }

                String prcitem = "<PrcItem>" + det.PrcItem + "</PrcItem>\n";
                if (det.PrcItem == 0)
                {
                    prcitem = "";
                }

                //agrego el punto de float

                String conpunto = det.DescuentoPct.ToString("N1");


                String descuentopct = "<DescuentoPct>" + conpunto + "</DescuentoPct>\n";
                if (det.DescuentoPct == 0)
                {
                    descuentopct = "";
                }

                String descuentomonto = "<DescuentoMonto>" + det.DescuentoMonto + "</DescuentoMonto>\n";
                if (det.DescuentoMonto == 0)
                {
                    descuentomonto = "";
                }

                String codimpadic = "<CodImpAdic>" + det.CodImpAdic + "</CodImpAdic>\n";
                if (det.CodImpAdic == "" || det.CodImpAdic == "0")
                {
                    codimpadic = "";
                }

                String nmbItem = det.NmbItem.Replace("&", "&amp;");



                detalle = "<Detalle>\n" +
                          "<NroLinDet>" + det.NroLinDet + "</NroLinDet>\n" +
                          "<CdgItem>\n" +
                          "<TpoCodigo>" + det.TpoCodigo + "</TpoCodigo>\n" +
                          "<VlrCodigo>" + det.VlrCodigo + "</VlrCodigo>\n" +
                          "</CdgItem>\n" +
                          indexe +
                          "<NmbItem>" + nmbItem + "</NmbItem>\n" +
                          qtyitem +
                          unmditem +
                          prcitem +
                          descuentopct +
                          descuentomonto +
                          codimpadic +
                          "<MontoItem>" + det.MontoItem + "</MontoItem>\n" +
                          "</Detalle>\n";

                documento = documento + detalle;
                if (i == 0)
                {
                    firstNmbItem = nmbItem.Replace("&", " ");
                }
                i++;
            }

            // for para crear descuento global y agregarlas al documento

            String descuentoglobal = String.Empty;

            if (doc.dscRcgGlobal != null)
            {
                foreach (var desglo in doc.dscRcgGlobal)
                {
                    String nrolindr = "<NroLinDR>" + desglo.NroLinDR + "</NroLinDR>\n";
                    if (desglo.NroLinDR == 0)
                    {
                        nrolindr = "";
                    }
                    String tpomov = "<TpoMov>" + desglo.TpoMov + "</TpoMov>\n";
                    if (desglo.TpoMov == "")
                    {
                        tpomov = "";
                    }
                    String glosadr = "<GlosaDR>" + desglo.GlosaDR + "</GlosaDR>\n";
                    if (desglo.GlosaDR == "")
                    {
                        glosadr = "";
                    }
                    String tpovalor = "<TpoValor>" + desglo.TpoValor + "</TpoValor>\n";
                    if (desglo.TpoValor == "")
                    {
                        tpovalor = "";
                    }
                    String valordr = "<ValorDR>" + desglo.ValorDR + "</ValorDR>\n";
                    if (desglo.ValorDR == 0)
                    {
                        valordr = "";
                    }

                    descuentoglobal = "<DscRcgGlobal>\n" +
                                      nrolindr +
                                      tpomov +
                                      glosadr +
                                      tpovalor +
                                      valordr +
                                      "</DscRcgGlobal>\n";
                    if (desglo.NroLinDR == 0)
                    {
                        descuentoglobal = "";
                    }

                    documento = documento + descuentoglobal;
                }
            }



            // for para crear referencias y agregarlas al documento
            String referencia;

            if (doc.Referencia != null)
            {
                foreach (var refe in doc.Referencia)
                {
                    String indglobal = "<IndGlobal>" + refe.IndGlobal + "</IndGlobal>\n";
                    if (refe.IndGlobal == 0)
                    {
                        indglobal = "";
                    }
                    String rutotr = "<RUTOtr>" + refe.RUTOtr + "</RUTOtr>\n";
                    if (refe.RUTOtr == "" || refe.RUTOtr == null)
                    {
                        rutotr = "";
                    }
                    String codref = "<CodRef>" + refe.CodRef + "</CodRef>\n";
                    if (refe.CodRef == 0)
                    {
                        codref = "";
                    }
                    String folioref = "<FolioRef>" + refe.FolioRef + "</FolioRef>\n";
                    if (refe.FolioRef == "")
                    {
                        folioref = "";
                    }
                    String fecharef = "<FchRef>" + refe.FchRef + "</FchRef>\n";
                    if (refe.FchRef == "")
                    {
                        fecharef = "";
                    }

                    referencia = "<Referencia>\n" +
                                 "<NroLinRef>" + refe.NroLinRef + "</NroLinRef>\n" +
                                 "<TpoDocRef>" + refe.TpoDocRef + "</TpoDocRef>\n" +
                                 indglobal +
                                 folioref +
                                 rutotr +
                                 // "<IdAdicOtr>" + refe.IdAdicOtr +  "</IdAdicOtr> \n" +
                                 fecharef +
                                 codref +
                                 "<RazonRef>" + refe.RazonRef + "</RazonRef>\n" +
                                 "</Referencia>\n";
                    if (refe.NroLinRef == 0)
                    {
                        referencia = "";
                    }

                    documento = documento + referencia;
                }
            }



            String fechaFirma   = "<TmstFirma>" + fch + "</TmstFirma>\r\n";
            String findocumenro = "</Documento>\r\n";

            String findte = "</DTE>\r\n";



            documento = documento + TED + fechaFirma + findocumenro + findte;

            X509Certificate2 cert = FuncionesComunes.obtenerCertificado(doc.NombreCertificado);

            String signDte = firmarDocumento(documento, cert);

            return(signDte);
        }
Exemple #6
0
        public void DoProcessIat()
        {
            PrinterModel        print       = new PrinterModel();
            List <PrinterModel> printerList = print.printerList();

            if (printerList.Count == 0)
            {
                //MessageBox.Show(@"No hay impresoras configuradas, se usará DefaultPrinter");
            }

            int i = 0;
            int j = 0;


            while (!_shouldStop)
            {
                Console.WriteLine("ProcessIat thread: working...");

                Thread.Sleep(5000);

                i++;

                String paquete        = String.Empty;
                String dirCurrentFile = String.Empty;
                String Impresora      = String.Empty;

                // instancia fileadmin, para tener las herramientas para mover archivos
                fileAdmin fileAdm = new fileAdmin();

                // inatancia txt_reader
                TxtReaderModel lec = new TxtReaderModel();

                DocumentoModel   docLectura = new DocumentoModel();
                FuncionesComunes fc         = new FuncionesComunes();

                if (printerList.Count == 0)
                {
                    dirCurrentFile = @"C:\AdmToSii\file";
                    Impresora      = fc.GetDefaultPrinter();
                }
                else
                {
                    PrinterModel printDir = printerList.ElementAt(j);
                    dirCurrentFile = printDir.directory;
                    Impresora      = printDir.printerName;
                }
                Console.WriteLine("Buscando Json en " + dirCurrentFile);
                j++;


                // Ejecuta metodo de txt_reader que llena y obtienen Clase Documento
                docLectura = lec.lectura("", false, dirCurrentFile);

                xmlPaquete xml = new xmlPaquete();

                List <int> tipos = new List <int>();

                DateTime thisDay = DateTime.Now;
                String   fch     = String.Format("{0:yyyy-MM-ddTHH:mm:ss}", thisDay);
                String   fchName = String.Format("{0:yyyyMMddTHHmmss}", thisDay);

                LogModel log = new LogModel();

                String firsRut = String.Empty;
                empresa = empresa.getEmpresa();


                if (docLectura != null)
                {
                    docLectura.estado = "PREVIO";
                    new DocumentoModel().save(docLectura);
                    // Proceso de ReImpresión
                    // ir a directorio procesados y buscar el archivo docLectura.filename
                    if (System.IO.File.Exists(@"C:\AdmToSii\fileprocess\" + docLectura.fileName)) // si ya existe, reimprimir
                    {
                        if (empresa.PrnThermal == "True")
                        {
                            String    fileNameXML = @"DTE_" + docLectura.RUTEmisor + "_" + docLectura.TipoDTE + "_" + docLectura.Folio + "_";
                            fileAdmin f           = new fileAdmin();

                            String fileXml = f.fileAprox(fileNameXML, @"C:/AdmToSii/file/xml/", "*.xml");

                            if (fileXml != null)
                            {
                                new ReimpThermal().reimp(docLectura, fileXml, Impresora);
                            }
                        }
                        else
                        {
                            String fileNamePDFRePrint = @"C:/AdmToSii/file/pdf/PRINT_" + docLectura.RUTEmisor + "_" + docLectura.TipoDTE + "_" + docLectura.Folio + ".pdf";

                            if (System.IO.File.Exists(fileNamePDFRePrint))
                            {
                                fc.printPdf(fileNamePDFRePrint, Impresora);
                            }
                        }
                        fileAdm.mvFile(docLectura.fileName, dirCurrentFile, @"C:\AdmToSii\fileprocess\");
                    }
                    else // si no procesar
                    {
                        fileAdm.mvFile(docLectura.fileName, dirCurrentFile, @"C:\AdmToSii\fileprocess\");

                        log.addLog("Inicio proceso TipoDTE :" + docLectura.TipoDTE + " Folio :" + docLectura.Folio, "OK");
                        tipos.Add(docLectura.TipoDTE);

                        String TimbreElec = xml.ted_to_xmlSii(docLectura, fch);
                        log.addLog("Crea Timbre TipoDTE :" + docLectura.TipoDTE + " Folio :" + docLectura.Folio, "OK");

                        String docXmlSign = xml.doc_to_xmlSii(docLectura, TimbreElec, fch);
                        log.addLog("Crea XML Envio TipoDTE :" + docLectura.TipoDTE + " Folio :" + docLectura.Folio, "OK");

                        // Guarda DTE xml
                        String DTE         = "<?xml version=\"1.0\" encoding=\"ISO-8859-1\"?>\r\n" + docXmlSign;
                        String fileNameXML = @"C:/AdmToSii/file/xml/DTE_" + docLectura.RUTEmisor + "_" + docLectura.TipoDTE + "_" + docLectura.Folio + "_" + fchName + ".xml";
                        using (System.IO.StreamWriter file = new System.IO.StreamWriter(fileNameXML, false, Encoding.GetEncoding("ISO-8859-1")))
                        {
                            file.WriteLine(docXmlSign);
                        }


                        //-----------------------------------------------------------------THERMAL--------------------------------------------------------------

                        if (empresa.PrnThermal == "True")
                        {
                            try
                            {
                                for (int copies = 0; copies < 3; copies++)
                                {
                                    Thermal thermal = new Thermal();
                                    thermal.doc    = docLectura;
                                    thermal.dd     = TimbreElec;
                                    thermal.copias = copies;
                                    if (docLectura.PrnTwoCopy == "True")
                                    {
                                        copies = 1;
                                    }
                                    docLectura.PrnTwoCopy = "False";
                                    if (copies == 2)
                                    {
                                        if (docLectura.TipoDTE == 33 || docLectura.TipoDTE == 34)
                                        {
                                            thermal.tipoCopia = "CEDIBLE";
                                        }
                                        if (docLectura.TipoDTE == 52)
                                        {
                                            thermal.tipoCopia = "CEDIBLE CON SU FACTURA";
                                        }

                                        if (docLectura.TipoDTE == 61)
                                        {
                                            break;
                                        }
                                    }
                                    //
                                    PrintDocument pd = new PrintDocument();
                                    pd.DefaultPageSettings.PaperSize = new PaperSize("", 284, 1800);
                                    pd.PrintPage += new PrintPageEventHandler(thermal.OpenThermal);
                                    pd.PrinterSettings.PrinterName = Impresora;
                                    Console.WriteLine(pd.ToString());
                                    pd.Print();
                                }

                                Pdf docpdf = new Pdf();

                                String fileNamePDF = @"C:/AdmToSii/file/pdf/DTE_" + docLectura.RUTEmisor + "_" + docLectura.TipoDTE + "_" + docLectura.Folio + "_" + fchName + ".pdf";
                                docpdf.OpenPdf(TimbreElec, docLectura, fileNamePDF, " ");
                                log.addLog("Crea PDF Trib TipoDTE :" + docLectura.TipoDTE + " Folio :" + docLectura.Folio, "OK");

                                String fileNamePDFCed = @"C:/AdmToSii/file/pdf/DTE_" + docLectura.RUTEmisor + "_" + docLectura.TipoDTE + "_" + docLectura.Folio + "_" + fchName + "CEDIBLE.pdf";

                                if (docLectura.TipoDTE == 33 || docLectura.TipoDTE == 34)
                                {
                                    docpdf.OpenPdf(TimbreElec, docLectura, fileNamePDFCed, "CEDIBLE");
                                }

                                if (docLectura.TipoDTE == 52)
                                {
                                    docpdf.OpenPdf(TimbreElec, docLectura, fileNamePDFCed, "CEDIBLE CON SU FACTURA");
                                }
                                log.addLog("Crea PDF C TipoDTE :" + docLectura.TipoDTE + " Folio :" + docLectura.Folio, "OK");
                                log.addLog("IMPRIME TipoDTE :" + docLectura.TipoDTE + " Folio :" + docLectura.Folio, "OK");

                                // Agrega el DTE timbrado al paquete

                                paquete = paquete + docXmlSign;

                                //Estrae el rut del emisor de la primera factura del paquete
                                if (i == 0)
                                {
                                    firsRut = docLectura.RUTEmisor;
                                }
                                i++;



                                // Firma Paquete unitario
                                String envioCliente = xml.creaEnvio(paquete, docLectura.RUTEmisor, docLectura.RUTRecep, tipos, docLectura.RutEnvia, docLectura.FchResol, docLectura.RUTRecep, docLectura.NumResol);

                                String envioSII = xml.creaEnvio(paquete, docLectura.RUTEmisor, docLectura.RUTRecep, tipos, docLectura.RutEnvia, docLectura.FchResol, "", docLectura.NumResol);

                                X509Certificate2 cert = FuncionesComunes.obtenerCertificado(docLectura.NombreCertificado);

                                String enviox509SII     = xml.firmarDocumento(envioSII, cert);
                                String enviox509Cliente = xml.firmarDocumento(envioCliente, cert);

                                log.addLog("FIRMA ENVIO TipoDTE :" + docLectura.TipoDTE + " Folio :" + docLectura.Folio, "OK");

                                enviox509SII     = "<?xml version=\"1.0\" encoding=\"ISO-8859-1\"?>\r\n" + enviox509SII;
                                enviox509Cliente = "<?xml version=\"1.0\" encoding=\"ISO-8859-1\"?>\r\n" + enviox509Cliente;


                                String fileNameEnvioSII = @"C:/AdmToSii/file/xml/enviounitario/EnvioUnit_" + docLectura.RUTEmisor + "_" + docLectura.Folio + "_" + fchName + ".xml";

                                String fileNameEnvioCliente = @"C:/AdmToSii/file/xml/enviounitario/EnvioUnitCliente_" + docLectura.RUTEmisor + "_" + docLectura.Folio + "_" + fchName + ".xml";

                                using (System.IO.StreamWriter file = new System.IO.StreamWriter(fileNameEnvioSII, false, Encoding.GetEncoding("ISO-8859-1")))
                                {
                                    file.WriteLine(enviox509SII);
                                }

                                using (System.IO.StreamWriter file = new System.IO.StreamWriter(fileNameEnvioCliente, false, Encoding.GetEncoding("ISO-8859-1")))
                                {
                                    file.WriteLine(enviox509Cliente);
                                }
                            }
                            catch (Exception ex)
                            {
                                MessageBox.Show("" + ex);
                            }
                            finally
                            {
                            }
                        }
                        else
                        {
                            Pdf docpdf = new Pdf();

                            String fileNamePDF = @"C:/AdmToSii/file/pdf/DTE_" + docLectura.RUTEmisor + "_" + docLectura.TipoDTE + "_" + docLectura.Folio + "_" + fchName + ".pdf";
                            docpdf.OpenPdf(TimbreElec, docLectura, fileNamePDF, " ");
                            log.addLog("Crea PDF Trib TipoDTE :" + docLectura.TipoDTE + " Folio :" + docLectura.Folio, "OK");

                            String fileNamePDFCed = @"C:/AdmToSii/file/pdf/DTE_" + docLectura.RUTEmisor + "_" + docLectura.TipoDTE + "_" + docLectura.Folio + "_" + fchName + "CEDIBLE.pdf";

                            if (docLectura.TipoDTE == 33 || docLectura.TipoDTE == 34)
                            {
                                docpdf.OpenPdf(TimbreElec, docLectura, fileNamePDFCed, "CEDIBLE");
                            }

                            if (docLectura.TipoDTE == 52)
                            {
                                docpdf.OpenPdf(TimbreElec, docLectura, fileNamePDFCed, "CEDIBLE CON SU FACTURA");
                            }
                            log.addLog("Crea PDF C TipoDTE :" + docLectura.TipoDTE + " Folio :" + docLectura.Folio, "OK");

                            // para otro tipo de impresion
                            // FuncionesComunes f = new FuncionesComunes();
                            // f.PrintDocument(@"CutePDF Writer", @"C:/AdmToSii/file/pdf/DTE_" + docLectura.RUTEmisor + "_" + docLectura.TipoDTE + "_" + docLectura.Folio + "_" + fchName + ".pdf");

                            //Imprime pdf

                            String fileNamePDFPrint = @"C:/AdmToSii/file/pdf/PRINT_" + docLectura.RUTEmisor + "_" + docLectura.TipoDTE + "_" + docLectura.Folio + ".pdf";
                            docpdf.OpenPdfPrint(TimbreElec, docLectura, fileNamePDFPrint);
                            log.addLog("Crea PDF PRINT TipoDTE :" + docLectura.TipoDTE + " Folio :" + docLectura.Folio, "OK");



                            fc.printPdf(fileNamePDFPrint, Impresora);

                            log.addLog("IMPRIME TipoDTE :" + docLectura.TipoDTE + " Folio :" + docLectura.Folio, "OK");

                            // Agrega el DTE timbrado al paquete

                            paquete = paquete + docXmlSign;

                            //Estrae el rut del emisor de la primera factura del paquete
                            if (i == 0)
                            {
                                firsRut = docLectura.RUTEmisor;
                            }
                            i++;



                            // Firma Paquete unitario
                            String envioCliente = xml.creaEnvio(paquete, docLectura.RUTEmisor, docLectura.RUTRecep, tipos, docLectura.RutEnvia, docLectura.FchResol, docLectura.RUTRecep, docLectura.NumResol);

                            String envioSII = xml.creaEnvio(paquete, docLectura.RUTEmisor, docLectura.RUTRecep, tipos, docLectura.RutEnvia, docLectura.FchResol, "", docLectura.NumResol);

                            X509Certificate2 cert = FuncionesComunes.obtenerCertificado(docLectura.NombreCertificado);

                            String enviox509SII     = xml.firmarDocumento(envioSII, cert);
                            String enviox509Cliente = xml.firmarDocumento(envioCliente, cert);

                            log.addLog("FIRMA ENVIO TipoDTE :" + docLectura.TipoDTE + " Folio :" + docLectura.Folio, "OK");

                            enviox509SII     = "<?xml version=\"1.0\" encoding=\"ISO-8859-1\"?>\r\n" + enviox509SII;
                            enviox509Cliente = "<?xml version=\"1.0\" encoding=\"ISO-8859-1\"?>\r\n" + enviox509Cliente;


                            String fileNameEnvioSII = @"C:/AdmToSii/file/xml/enviounitario/EnvioUnit_" + docLectura.RUTEmisor + "_" + docLectura.Folio + "_" + fchName + ".xml";

                            String fileNameEnvioCliente = @"C:/AdmToSii/file/xml/enviounitario/EnvioUnitCliente_" + docLectura.RUTEmisor + "_" + docLectura.Folio + "_" + fchName + ".xml";

                            using (System.IO.StreamWriter file = new System.IO.StreamWriter(fileNameEnvioSII, false, Encoding.GetEncoding("ISO-8859-1")))
                            {
                                file.WriteLine(enviox509SII);
                            }

                            using (System.IO.StreamWriter file = new System.IO.StreamWriter(fileNameEnvioCliente, false, Encoding.GetEncoding("ISO-8859-1")))
                            {
                                file.WriteLine(enviox509Cliente);
                            }
                        }



                        // *************  Envía json a server
                        //Connect conn = new Connect();
                        String trib = @"DTE_" + docLectura.RUTEmisor + "_" + docLectura.TipoDTE + "_" + docLectura.Folio + "_" + fchName + ".pdf";
                        String envU = @"EnvioUnit_" + docLectura.RUTEmisor + "_" + docLectura.Folio + "_" + fchName + ".xml";
                        String envC = @"EnvioUnitCliente_" + docLectura.RUTEmisor + "_" + docLectura.Folio + "_" + fchName + ".xml";
                        String envF = @"DTE_" + docLectura.RUTEmisor + "_" + docLectura.TipoDTE + "_" + docLectura.Folio + "_" + fchName + ".xml";
                        String ced  = String.Empty;
                        if (docLectura.TipoDTE != 61 && docLectura.TipoDTE != 56)
                        {
                            ced = @"DTE_" + docLectura.RUTEmisor + "_" + docLectura.TipoDTE + "_" + docLectura.Folio + "_" + fchName + "CEDIBLE.pdf";
                        }

                        // Envia al SII

                        string recepcionDteXml = conSii.send(docLectura.RutEnvia, docLectura.RUTEmisor, envU);
                        envioM.tipoDte         = docLectura.TipoDTE;
                        envioM.folio           = docLectura.Folio;
                        envioM.fchEmis         = DateTime.Parse(docLectura.FchEmis);
                        envioM.mntTotal        = docLectura.MntTotal;
                        envioM.CdgSIISucur     = docLectura.CdgSIISucur;
                        envioM.estado          = funcComunes.getStatus(recepcionDteXml);
                        envioM.envioXml        = envU;
                        envioM.recepcionDteXml = recepcionDteXml;
                        envioM.trackId         = funcComunes.getTrackId(recepcionDteXml);
                        envioM.save(envioM);


                        //envia documentos al core
                        //conn.sendInvoice(docLectura, trib, ced, envU, envC, envF, "S");
                        // *************  Envía json a server
                        //log.addLog("Envia CORE TipoDTE :" + docLectura.TipoDTE + " Folio :" + docLectura.Folio, "OK");
                        // ************  Crea regsitro del ultimo dte
                        // UltimoDteSqlModel uDTE = new UltimoDteSqlModel();
                        //uDTE.addUltmoDte(docLectura);
                    }
                }
                if (j == printerList.Count())
                {
                    j = 0;
                }
                fileAdm.buscaXmlProveedor();
            }
            Console.WriteLine("ProcessIat thread: terminating gracefully.");
        }