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); } }
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); } }
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); }
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(); }
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("&", "&"); 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("&", "&"); 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); }
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."); }