static void Main() { string estado = string.Empty; estado = new FuncionesComunes().isRunAplication(); //MessageBox.Show(estado); bool isNew = false; Mutex mtx = new Mutex(true, "IatDteBridge", out isNew); if (!isNew) { //MessageBox.Show("se esta ejecutando la aplicación"); return; } if (estado != "True") { Application.EnableVisualStyles(); Application.SetCompatibleTextRenderingDefault(false); Application.Run(new FormMain()); } else { Environment.Exit(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); }
public void procesoPaquete() { string paquete = string.Empty; // instancia fileadmin, para tener las herramientas para mover archivos fileAdmin fileAdm = new fileAdmin(); // inatancia txt_reader TxtReader lec = new TxtReader(); Documento docLectura = new Documento(); // Ejecuta metodo de txt_reader que llena y obtienen Clase Documento docLectura = lec.lectura("", true, ""); // instancia XML_admin xmlPaquete xml = new xmlPaquete(); List <int> tipos = new List <int>(); // eliminar despues de la simulacion Empresa empresa = new Empresa(); empresa = empresa.getEmpresa(); DateTime thisDay = DateTime.Now; String fch = String.Format("{0:yyyy-MM-ddTHH:mm:ss}", thisDay); String fchName = String.Format("{0:yyyyMMddTHHmmss}", thisDay); int folio33 = 735; int folio34 = 1000; //Factura Exenta int folio52 = 10; //Guia Despacho int folio61 = 15; int folio56 = 15; int folio = 0; int folio46 = 0; int i = 0; String firsRut = String.Empty; String rutenvia = String.Empty; String fchresol = String.Empty; String nomcertificado = String.Empty; String numResol = String.Empty; while (docLectura != null) { switch (docLectura.TipoDTE) { case 33: { folio33++; folio = folio33; } break; case 34: { folio34++; folio = folio34; } break; case 52: { folio52++; folio = folio52; } break; case 61: { folio61++; folio = folio61; } break; case 56: { folio56++; folio = folio56; } break; case 46: { folio46++; folio = folio46; } break; } tipos.Add(docLectura.TipoDTE); // docLectura.Folio = folio; String TimbreElec = xml.ted_to_xmlSii(docLectura, fch); String docXmlSign = xml.doc_to_xmlSii(docLectura, TimbreElec, fch); // Guarda DTE xml String DTE = "<?xml version=\"1.0\" encoding=\"ISO-8859-1\"?>\r\n" + docXmlSign; String fileNameXML = @"" + Microsoft.Win32.Registry.GetValue(@"HKEY_CURRENT_USER\Iat", "unidadIat", null).ToString() + ":/IatFiles/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); } //Generar PDF Pdf docpdf = new Pdf(); String fileNamePDF = @"" + Microsoft.Win32.Registry.GetValue(@"HKEY_CURRENT_USER\Iat", "unidadIat", null).ToString() + ":/IatFiles/file/pdf/DTE_" + docLectura.RUTEmisor + "_" + docLectura.TipoDTE + "_" + docLectura.Folio + "_" + fchName + "TRIBUTABLE.pdf"; docpdf.OpenPdf(TimbreElec, docLectura, fileNamePDF, " "); docpdf.OpenPdf(TimbreElec, docLectura, fileNamePDF, " "); String fileNamePDFCed = @"" + Microsoft.Win32.Registry.GetValue(@"HKEY_CURRENT_USER\Iat", "unidadIat", null).ToString() + ":/IatFiles/file/pdf/DTE_" + docLectura.RUTEmisor + "_" + docLectura.TipoDTE + "_" + docLectura.Folio + "_" + fchName + "CEDIBLE.pdf"; if (docLectura.TipoDTE == 33 || docLectura.TipoDTE == 34 || docLectura.TipoDTE == 46) { docpdf.OpenPdf(TimbreElec, docLectura, fileNamePDFCed, "CEDIBLE"); } if (docLectura.TipoDTE == 52) { docpdf.OpenPdf(TimbreElec, docLectura, fileNamePDFCed, "CEDIBLE CON SU FACTURA"); } //Genere Print Thermal if (empresa.PrnThermal == "True") { 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 || docLectura.TipoDTE == 46) { 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 = "prnPdf"; Console.WriteLine(pd.ToString()); if (copies == 2) { pd.DocumentName = docLectura.RUTEmisor + "_" + docLectura.TipoDTE + "_" + docLectura.Folio + "_" + fchName + "_CEDIBLE"; } else { pd.DocumentName = docLectura.RUTEmisor + "_" + docLectura.TipoDTE + "_" + docLectura.Folio + "_" + fchName + "_TRIBUTABLE"; } pd.Print(); } } // 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; rutenvia = docLectura.RutEnvia; fchresol = docLectura.FchResol; numResol = docLectura.NumResol; nomcertificado = docLectura.NombreCertificado; } i++; //Sgte Documento docLectura = lec.lectura("", true, ""); // Verifica que el siguiente documento sea del mismo emisor /* if (docLectura != null) * { * while (docLectura.RUTEmisor != firsRut) * { * // si no tiene el mismo rut * // lo saca del directorio * fileAdm.mvFile(docLectura.fileName, @""+Microsoft.Win32.Registry.GetValue(@"HKEY_CURRENT_USER\Iat", "unidadIat", null).ToString()+":\IatFiles\file\", @""+Microsoft.Win32.Registry.GetValue(@"HKEY_CURRENT_USER\Iat", "unidadIat", null).ToString()+":\IatFiles\file\noincluidos\"); * * //Sgte Documento * docLectura = lec.lectura(); * } * } */ } // Firma POaquete String envio = xml.creaEnvio(paquete, firsRut, "", tipos, rutenvia, fchresol, "", numResol); X509Certificate2 cert = FuncionesComunes.obtenerCertificado(nomcertificado); String enviox509 = xml.firmarDocumento(envio, cert); enviox509 = "<?xml version=\"1.0\" encoding=\"ISO-8859-1\"?>\r\n" + enviox509; String fileNameEnvio = @"" + Microsoft.Win32.Registry.GetValue(@"HKEY_CURRENT_USER\Iat", "unidadIat", null).ToString() + ":/IatFiles/file/xml/EnvioPAck_" + firsRut + "_" + fchName + ".xml"; using (System.IO.StreamWriter file = new System.IO.StreamWriter(fileNameEnvio, false, Encoding.GetEncoding("ISO-8859-1"))) { file.WriteLine(enviox509); } Console.WriteLine(enviox509); }
public String doc_to_xmlSii(Documento 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 fmapago = "<FmaPago>" + doc.FmaPago + "</FmaPago>\n"; if (doc.FmaPago == 0) { fmapago = ""; } string mediopago = "<MedioPago>" + doc.MedioPago + "</MedioPago>\n"; if (doc.MedioPago == "" || doc.MedioPago == null) { mediopago = ""; } String encabezado = "<Encabezado>\n" + "<IdDoc> \n" + "<TipoDTE>" + doc.TipoDTE + "</TipoDTE>\n" + "<Folio>" + doc.Folio + "</Folio> \n" + "<FchEmis>" + doc.FchEmis + "</FchEmis>\n" + tipodespacho + indtraslado + fmapago + mediopago + "</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 = new ConnectDb().getDirLocal(); } if (doc.CmnaRecep == " ") { Console.WriteLine("ERROR EN DATOS DEL RECEPTOR"); doc.CmnaRecep = new ConnectDb().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 = ""; } if (doc.TipoDTE == 34) { doc.TasaIVA = 0; } 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("&", "&"); nmbItem = nmbItem.ToString().Replace('"', ' ').Trim(); 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 String doc_to_xmlSii(Documento 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"; String receptor = "<Receptor>\n" + "<RUTRecep>" + doc.RUTRecep + "</RUTRecep>\n" + "<RznSocRecep>" + doc.RznSocRecep + "</RznSocRecep>\n" + "<GiroRecep>" + doc.GiroRecep + "</GiroRecep>\n" + "<DirRecep>" + doc.DirRecep + "</DirRecep>\n" + "<CmnaRecep>" + doc.CmnaRecep + "</CmnaRecep>\n" + "<CiudadRecep>" + doc.CiudadRecep + "</CiudadRecep>\n" + "</Receptor>\n"; String impreten = String.Empty; string impretenes = String.Empty; foreach (var imp in doc.imptoReten) { impreten = "<ImptoReten>\n" + "<TipoImp>" + imp.TipoImp + "</TipoImp>\n" + "<TasaImp>" + imp.TasaImp + "</TasaImp>\n" + "<MontoImp>" + imp.MontoImp + "</MontoImp>\n" + "</ImptoReten>\n"; if (imp.TipoImp == "") { impreten = ""; } impretenes += impreten; } 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") { 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; } i++; } // for para crear descuento global y agregarlas al documento String descuentoglobal = String.Empty; 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; 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 == "") { rutotr = ""; } String codref = "<CodRef>" + refe.CodRef + "</CodRef>\n"; if (refe.CodRef == 0) { codref = ""; } referencia = "<Referencia>\n" + "<NroLinRef>" + refe.NroLinRef + "</NroLinRef>\n" + "<TpoDocRef>" + refe.TpoDocRef + "</TpoDocRef>\n" + indglobal + "<FolioRef>" + refe.FolioRef + "</FolioRef>\n" + rutotr + // "<IdAdicOtr>" + refe.IdAdicOtr + "</IdAdicOtr> \n" + "<FchRef>" + refe.FchRef + "</FchRef>\n" + 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); Log log = new Log(); log.addLog("XML generado y firmado TipoDTE :" + doc.TipoDTE + " Folio :" + doc.Folio, "OK"); return(signDte); }
public String libroCompra_to_xml(LibroCompra libro) { Documento doc = new Documento(); Empresa empresa = new Empresa(); empresa = empresa.getEmpresa(); String folioNotificacion = "<FolioNotificacion>" + libro.FolioNotificacion + "</FolioNotificacion>\n"; if (libro.NroResol != 0) { folioNotificacion = ""; } String cabeceraLibro = "<LibroCompraVenta xmlns:xsi=\"http://www.w3.org/2001/XMLSchema-instance\" xsi:schemaLocation=\"http://www.sii.cl/SiiDte LibroCV_v10.xsd\" version=\"1.0\" xmlns=\"http://www.sii.cl/SiiDte\">\n" + "<EnvioLibro ID=\"IECV201406\">\n" + "<Caratula>\n" + "<RutEmisorLibro>" + libro.RutEmisorLibro + "</RutEmisorLibro>\n" + "<RutEnvia>" + libro.RutEnvia + "</RutEnvia>\n" + "<PeriodoTributario>" + libro.PeriodoTributario + "</PeriodoTributario>\n" + "<FchResol>" + libro.FchResol + "</FchResol>\n" + "<NroResol>" + libro.NroResol + "</NroResol>\n" + "<TipoOperacion>" + libro.TipoOperacion + "</TipoOperacion>\n" + "<TipoLibro>" + libro.TipoLibro + "</TipoLibro>\n" + "<TipoEnvio>" + libro.TipoEnvio + "</TipoEnvio>\n" + folioNotificacion + "</Caratula>\n"; String resumen = "<ResumenPeriodo>\n"; String TotalesP = String.Empty; foreach (var total in libro.TotalesPeriodo) { String totopivausocomun = "<TotOpIVAUsoComun>" + total.TotOpIVAUsoComun + "</TotOpIVAUsoComun>\n"; if (total.TotOpIVAUsoComun == 0) { totopivausocomun = ""; } String totivausocomun = "<TotIVAUsoComun>" + total.TotIVAUsoComun + "</TotIVAUsoComun>\n"; if (total.TotIVAUsoComun == 0) { totivausocomun = ""; } String fctprop = "<FctProp>" + total.FctProp + "</FctProp>\n"; if (total.FctProp == 0) { fctprop = ""; } String totcredivausocomun = "<TotCredIVAUsoComun>" + total.TotCredIVAUsoComun + "</TotCredIVAUsoComun>\n"; if (total.TotCredIVAUsoComun == 0) { totcredivausocomun = ""; } String b = String.Empty; String c = String.Empty; string totOtrosImp = string.Empty; String d = String.Empty; String a = "<TotalesPeriodo>\n" + "<TpoDoc>" + total.TpoDoc + "</TpoDoc>\n" + "<TotDoc>" + total.TotDoc + "</TotDoc>\n" + "<TotMntExe>" + total.TotMntExe + "</TotMntExe>\n" + "<TotMntNeto>" + total.TotMntNeto + "</TotMntNeto>\n" + "<TotMntIVA>" + total.TotMntIVA + "</TotMntIVA>\n" + totopivausocomun + totivausocomun + fctprop + totcredivausocomun; if (total.TotIVANoRec == null) { b = ""; } else { foreach (var ivano in total.TotIVANoRec) { b = "<TotIVANoRec>\n" + "<CodIVANoRec>" + ivano.CodIVANoRec + "</CodIVANoRec>\n" + "<TotOpIVANoRec>" + ivano.TotOpIVANoRec + "</TotOpIVANoRec>\n" + "<TotMntIVANoRec>" + ivano.TotMntIVANoRec + "</TotMntIVANoRec>\n" + "</TotIVANoRec>\n"; } } if (total.TotOtrosImp.Count == 0) { c = ""; } else { foreach (var otrosimp in total.TotOtrosImp) { c = "<TotOtrosImp>\n" + "<CodImp>" + otrosimp.CodImp + "</CodImp>\n" + "<TotMntImp>" + otrosimp.TotMntImp + "</TotMntImp>\n" + "</TotOtrosImp>\n"; totOtrosImp += c; } } TotalesP += a + b + totOtrosImp + d + // "<TotIVAFueraPlazo>" + total.TotIVAFueraPlazo + "</TotIVAFueraPlazo>\n" + "<TotMntTotal>" + total.TotMntTotal + "</TotMntTotal>\n" + "</TotalesPeriodo>\n"; } String finResumen = "</ResumenPeriodo>\n"; String detalle = String.Empty; String detIvaNo = String.Empty; String detOtrosImp = String.Empty; String detalleaux = String.Empty; foreach (var det in libro.Detalle) { if (detIvaNo == null) { detIvaNo = ""; } // String mntiva = "<MntIVA>" + det.MntIVA+ "</MntIVA>\n"; // if(det.MntIVA == 0) // mntiva = ""; detalle = "<Detalle>\n" + "<TpoDoc>" + det.TpoDoc + "</TpoDoc>\n" + "<NroDoc>" + det.NroDoc + "</NroDoc>\n" + "<TpoImp>" + det.TpoImp + "</TpoImp>\n" + "<TasaImp>" + det.TasaImp + "</TasaImp>\n" + "<FchDoc>" + det.FchDoc + "</FchDoc>\n" + "<RUTDoc>" + det.RUTDoc + "</RUTDoc>\n" + "<RznSoc>" + det.RznSoc + "</RznSoc>\n" + "<MntExe>" + det.MntExe + "</MntExe>\n" + "<MntNeto>" + det.MntNeto + "</MntNeto>\n" + "<MntIVA>" + det.MntIVA + "</MntIVA>\n"; if (det.IVANoRec == null) { detIvaNo = ""; } else { foreach (var iva in det.IVANoRec) { detIvaNo = "<IVANoRec>\n" + "<CodIVANoRec>" + iva.CodIVANoRec + "</CodIVANoRec>\n" + "<MntIVANoRec>" + iva.MntIVANoRec + "</MntIVANoRec>\n" + "</IVANoRec>\n"; } } String ivausocomun = "<IVAUsoComun>" + det.IVAUsoComun + "</IVAUsoComun>\n"; if (det.IVAUsoComun == 0) { ivausocomun = ""; } if (det.OtrosImp.Count == 0) { detOtrosImp = ""; } else { foreach (var otros in det.OtrosImp) { detOtrosImp = "<OtrosImp>\n" + "<CodImp>" + otros.CodImp + "</CodImp>\n" + "<TasaImp>" + otros.TasaImp + "</TasaImp>\n" + "<MntImp>" + otros.MntImp + "</MntImp>\n" + "</OtrosImp>\n"; } } detalleaux += detalle + detIvaNo + ivausocomun + detOtrosImp + "<MntTotal>" + det.MntTotal + "</MntTotal>\n" + "</Detalle>\n"; } DateTime thisDay = DateTime.Now; String fch = String.Format("{0:yyyy-MM-ddTHH:mm:ss}", thisDay); String finLibro = "<TmstFirma>" + fch + "</TmstFirma>" + "</EnvioLibro>" + "</LibroCompraVenta>"; String LibroCom = cabeceraLibro + resumen + TotalesP + finResumen + detalleaux + finLibro; X509Certificate2 cert = FuncionesComunes.obtenerCertificado(empresa.NomCertificado); String signLibro = firmarLibro(LibroCom, cert); return(signLibro); }
public void DoProcessIat() { PrinterDir print = new PrinterDir(); List <PrinterDir> 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 TxtReader lec = new TxtReader(); Documento docLectura = new Documento(); FuncionesComunes fc = new FuncionesComunes(); if (printerList.Count == 0) { dirCurrentFile = @"" + Microsoft.Win32.Registry.GetValue(@"HKEY_CURRENT_USER\Iat", "unidadIat", null).ToString() + ":/IatFiles/file"; Impresora = fc.GetDefaultPrinter(); } else { PrinterDir 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); // Proceso de validación de Folio, si este proceso no tiene exito se dejará el json en directorio errorFolio // se dejará el objeto docLectura para que no sea procesado // ************************************************ // Obtener folioSiguiente /* Folio folio = new Folio(); * folio = folio.getFolio(docLectura.TipoDTE, docLectura.RUTEmisor); * * * // comparar folio siguiente con docLectura.folio * if (folio.folioSgte == docLectura.Folio) * { * // Si son iguales * // Continuar con el proceso normal * } * else * { * // Si no son iguales * // Verificar que quedan folios * if (folio.folioSgte > folio.folioFin) * { * // si quedan folios * // Avisar a Cajero * SocketClient sc = new SocketClient(); * sc.StartClient("El Folio "+docLectura.Folio+" ha cambiado por el "+folio.folioSgte); * // docLectura.Folio = FolioSiguiente * docLectura.Folio = folio.folioSgte; * // TO DO; UpdatearADM * * } * else * { * // si no quedan folios * // Mover el Json a directorio errorFolio * fileAdm.mvFile(docLectura.fileName, dirCurrentFile, @""+Microsoft.Win32.Registry.GetValue(@"HKEY_CURRENT_USER\Iat", "unidadIat", null).ToString()+":\IatFiles\errorFolio\"); * // dejar docLectura en Null para que no se imprima * docLectura = null; * } * } */ //************************************************* // instancia XML_admin 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); Log log = new Log(); String firsRut = String.Empty; empresa = empresa.getEmpresa(); if (docLectura != null) { // Proceso de ReImpresión // ir a directorio procesados y buscar el archivo docLectura.filename if (System.IO.File.Exists(@"" + Microsoft.Win32.Registry.GetValue(@"HKEY_CURRENT_USER\Iat", "unidadIat", null).ToString() + ":/IatFiles/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, @"" + Microsoft.Win32.Registry.GetValue(@"HKEY_CURRENT_USER\Iat", "unidadIat", null).ToString() + ":/IatFiles/file/xml/", "*.xml"); if (fileXml != null) { new ReimpThermal().reimp(docLectura, fileXml, Impresora); } } else { String fileNamePDFRePrint = @"" + Microsoft.Win32.Registry.GetValue(@"HKEY_CURRENT_USER\Iat", "unidadIat", null).ToString() + ":/IatFiles/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, @"" + Microsoft.Win32.Registry.GetValue(@"HKEY_CURRENT_USER\Iat", "unidadIat", null).ToString() + ":/IatFiles/fileprocess/"); } else // si no procesar { fileAdm.mvFile(docLectura.fileName, dirCurrentFile, @"" + Microsoft.Win32.Registry.GetValue(@"HKEY_CURRENT_USER\Iat", "unidadIat", null).ToString() + ":/IatFiles/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 = @"" + Microsoft.Win32.Registry.GetValue(@"HKEY_CURRENT_USER\Iat", "unidadIat", null).ToString() + ":/IatFiles/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); } //si es digitalTerminal abrir Pdf if (empresa.VistaPrevia == "True") { Pdf docpdf = new Pdf(); String fileNamePDF = @"" + Microsoft.Win32.Registry.GetValue(@"HKEY_CURRENT_USER\Iat", "unidadIat", null).ToString() + ":/IatFiles/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 = @"" + Microsoft.Win32.Registry.GetValue(@"HKEY_CURRENT_USER\Iat", "unidadIat", null).ToString() + ":/IatFiles/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"); String fileNamePDFPrint = @"" + Microsoft.Win32.Registry.GetValue(@"HKEY_CURRENT_USER\Iat", "unidadIat", null).ToString() + ":/IatFiles/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"); // 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 POaquete 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 = @"" + Microsoft.Win32.Registry.GetValue(@"HKEY_CURRENT_USER\Iat", "unidadIat", null).ToString() + ":/IatFiles/file/xml/enviounitario/EnvioUnit_" + docLectura.RUTEmisor + "_" + docLectura.Folio + "_" + fchName + ".xml"; String fileNameEnvioCliente = @"" + Microsoft.Win32.Registry.GetValue(@"HKEY_CURRENT_USER\Iat", "unidadIat", null).ToString() + ":/IatFiles/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); } System.Diagnostics.Process.Start(fileNamePDFPrint); } else { //-----------------------------------------------------------------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 = @"" + Microsoft.Win32.Registry.GetValue(@"HKEY_CURRENT_USER\Iat", "unidadIat", null).ToString() + ":/IatFiles/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 = @"" + Microsoft.Win32.Registry.GetValue(@"HKEY_CURRENT_USER\Iat", "unidadIat", null).ToString() + ":/IatFiles/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 POaquete 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 = @"" + Microsoft.Win32.Registry.GetValue(@"HKEY_CURRENT_USER\Iat", "unidadIat", null).ToString() + ":/IatFiles/file/xml/enviounitario/EnvioUnit_" + docLectura.RUTEmisor + "_" + docLectura.Folio + "_" + fchName + ".xml"; String fileNameEnvioCliente = @"" + Microsoft.Win32.Registry.GetValue(@"HKEY_CURRENT_USER\Iat", "unidadIat", null).ToString() + ":/IatFiles/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 = @"" + Microsoft.Win32.Registry.GetValue(@"HKEY_CURRENT_USER\Iat", "unidadIat", null).ToString() + ":/IatFiles/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 = @"" + Microsoft.Win32.Registry.GetValue(@"HKEY_CURRENT_USER\Iat", "unidadIat", null).ToString() + ":/IatFiles/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", @""+Microsoft.Win32.Registry.GetValue(@"HKEY_CURRENT_USER\Iat", "unidadIat", null).ToString()+":/IatFiles/file/pdf/DTE_" + docLectura.RUTEmisor + "_" + docLectura.TipoDTE + "_" + docLectura.Folio + "_" + fchName + ".pdf"); //Imprime pdf String fileNamePDFPrint = @"" + Microsoft.Win32.Registry.GetValue(@"HKEY_CURRENT_USER\Iat", "unidadIat", null).ToString() + ":/IatFiles/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 POaquete 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 = @"" + Microsoft.Win32.Registry.GetValue(@"HKEY_CURRENT_USER\Iat", "unidadIat", null).ToString() + ":/IatFiles/file/xml/enviounitario/EnvioUnit_" + docLectura.RUTEmisor + "_" + docLectura.Folio + "_" + fchName + ".xml"; String fileNameEnvioCliente = @"" + Microsoft.Win32.Registry.GetValue(@"HKEY_CURRENT_USER\Iat", "unidadIat", null).ToString() + ":/IatFiles/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 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 UltimoDteSql uDTE = new UltimoDteSql(); uDTE.addUltmoDte(docLectura); } } if (j == printerList.Count()) { j = 0; } } Console.WriteLine("ProcessIat thread: terminating gracefully."); }
public String do_libroGuias(LibroGuias libro) { Documento doc = new Documento(); Empresa empresa = new Empresa(); empresa = empresa.getEmpresa(); if (libro != null) { String cabeceraLibro = " <LibroGuia xmlns=\"http://www.sii.cl/SiiDte\" xmlns:xsi=\"http://www.w3.org/2001/XMLSchema-instance\" version=\"1.0\" xsi:schemaLocation=\"http://www.sii.cl/SiiDte LibroGuia_v10.xsd\">" + "<EnvioLibro ID=\"IECV201312\">" + "<Caratula>" + "<RutEmisorLibro>" + libro.RutEmisorLibro + "</RutEmisorLibro>" + "<RutEnvia>" + libro.RutEnvia + "</RutEnvia>" + "<PeriodoTributario>" + libro.PeriodoTributario + "</PeriodoTributario>" + "<FchResol>" + libro.FchResol + "</FchResol>" + "<NroResol>" + libro.NroResol + "</NroResol>" + "<TipoLibro>ESPECIAL</TipoLibro>" + "<TipoEnvio>TOTAL</TipoEnvio>" + "<FolioNotificacion>1</FolioNotificacion>" + "</Caratula>"; String resumen = "<ResumenPeriodo>"; foreach (var totPer in libro.ResumenPeriodo) { resumen += "<TotFolAnulado>" + totPer.TotFolAnulado + "</TotFolAnulado>" + "<TotGuiaAnulada>" + totPer.TotGuiaAnulada + "</TotGuiaAnulada>" + "<TotGuiaVenta>" + totPer.TotGuiaVenta + "</TotGuiaVenta>" + "<TotMntGuiaVta>" + totPer.TotMntGuiaVta + "</TotMntGuiaVta>" + "<TotMntModificado>" + totPer.TotMntModificado + "</TotMntModificado>"; foreach (var tras in totPer.TotTraslado) { resumen += "<TotTraslado>" + "<TpoTraslado>" + tras.TpoTraslado + "</TpoTraslado>" + "<CantGuia>" + tras.CantGuia + "</CantGuia>" + "<MntGuia>" + tras.MntGuia + "</MntGuia>" + "</TotTraslado>"; } } String finResumen = "</ResumenPeriodo>"; String detall = String.Empty; foreach (var det in libro.Detalle) { String anulado = "<Anulado>" + det.Anulado + "</Anulado>"; if (det.Anulado == 0) { anulado = ""; } detall += "<Detalle>" + "<Folio>" + det.Folio + "</Folio>" + anulado + "<Operacion>" + det.Operacion + "</Operacion>" + "<TpoOper>" + det.TpoOper + "</TpoOper>" + "<FchDoc>" + det.FchDoc + "</FchDoc>" + "<RUTDoc>" + det.RUTDoc + "</RUTDoc>" + "<RznSoc>" + det.RznSoc + "</RznSoc>" + "<MntNeto>" + det.MntNeto + "</MntNeto>" + "<TasaImp>" + det.TasaImp + "</TasaImp>" + "<IVA>" + det.IVA + "</IVA>" + "<MntTotal>" + det.MntTotal + "</MntTotal>" + "<MntModificado>" + det.MntModificado + "</MntModificado>" + "</Detalle>"; } DateTime thisDay = DateTime.Now; String fch = String.Format("{0:yyyy-MM-ddTHH:mm:ss}", thisDay); String finLibro = "<TmstFirma>" + fch + "</TmstFirma>" + "</EnvioLibro>" + "</LibroGuia>"; String libroGuia = cabeceraLibro + resumen + finResumen + detall + finLibro; X509Certificate2 cert = FuncionesComunes.obtenerCertificado(empresa.NomCertificado); String signLibro = firmarLibroGuias(libroGuia, cert); return(signLibro); } else { return(null); } }
public String do_libroVentas(LibroVenta libro) { Documento doc = new Documento(); Empresa empresa = new Empresa(); empresa = empresa.getEmpresa(); String folioNotificacion = "<FolioNotificacion>" + libro.FolioNotificacion + "</FolioNotificacion>\n"; if (libro.NroResol != 0) { folioNotificacion = ""; } String cabeceraLibro = "<LibroCompraVenta xmlns:xsi=\"http://www.w3.org/2001/XMLSchema-instance\" xsi:schemaLocation=\"http://www.sii.cl/SiiDte LibroCV_v10.xsd\" version=\"1.0\" xmlns=\"http://www.sii.cl/SiiDte\">\n" + "<EnvioLibro ID=\"ID201204\">\n" + "<Caratula>\n" + "<RutEmisorLibro>" + libro.RutEmisorLibro + "</RutEmisorLibro>\n" + "<RutEnvia>" + libro.RutEnvia + "</RutEnvia>\n" + "<PeriodoTributario>" + libro.PeriodoTributario + "</PeriodoTributario>\n" + "<FchResol>" + libro.FchResol + "</FchResol>\n" + "<NroResol>" + libro.NroResol + "</NroResol>\n" + "<TipoOperacion>" + libro.TipoOperacion + "</TipoOperacion>\n" + "<TipoLibro>" + libro.TipoLibro + "</TipoLibro>\n" + "<TipoEnvio>" + libro.TipoEnvio + "</TipoEnvio>\n" + folioNotificacion + "</Caratula>\n"; String resumen = "<ResumenPeriodo>\n"; String TotalesP = String.Empty; foreach (var total in libro.TotalesPeriodo) { String b = String.Empty; String c = String.Empty; String d = String.Empty; String a = "<TotalesPeriodo>\n" + "<TpoDoc>" + total.TpoDoc + "</TpoDoc>\n" + "<TotDoc>" + total.TotDoc + "</TotDoc>\n" + "<TotMntExe>" + total.TotMntExe + "</TotMntExe>\n" + "<TotMntNeto>" + total.TotMntNeto + "</TotMntNeto>\n" + "<TotMntIVA>" + total.TotMntIVA + "</TotMntIVA>\n"; if (total.TotOtrosImp != null) { foreach (var otrosimp in total.TotOtrosImp) { if (otrosimp.CodImp == 0) { c = ""; } else { c = "<TotOtrosImp>\n" + "<CodImp>" + otrosimp.CodImp + "</CodImp>\n" + "<TotMntImp>" + otrosimp.TotMntImp + "</TotMntImp>\n" + "</TotOtrosImp>\n"; } } } // si montoivafueraplazo es nulo o cero no se agrega en el xml String totIVAFueraPlazo = String.Empty; if (total.TotIVAFueraPlazo == 0) { totIVAFueraPlazo = ""; } else { totIVAFueraPlazo = "<TotIVAFueraPlazo>" + total.TotIVAFueraPlazo + "</TotIVAFueraPlazo>\n"; } TotalesP += a + b + c + d + totIVAFueraPlazo + "<TotMntTotal>" + total.TotMntTotal + "</TotMntTotal>\n" + "</TotalesPeriodo>\n"; } String finResumen = "</ResumenPeriodo>\n"; String detalle = String.Empty; String detalles = String.Empty; String detIvaNo = String.Empty; String detOtrosImp = String.Empty; String mnttotal = String.Empty; if (libro.Detalle == null) { detalle = ""; detOtrosImp = ""; } else { foreach (var det in libro.Detalle) { detalle = "<Detalle>\n" + "<TpoDoc>" + det.TpoDoc + "</TpoDoc>\n" + "<NroDoc>" + det.NroDoc + "</NroDoc>\n" + "<TasaImp>" + det.TasaImp + "</TasaImp>\n" + "<FchDoc>" + det.FchDoc + "</FchDoc>\n" + "<RUTDoc>" + det.RUTDoc + "</RUTDoc>\n" + "<RznSoc>" + det.RznSoc + "</RznSoc>\n" + "<MntExe>" + det.MntExe + "</MntExe>\n" + "<MntNeto>" + det.MntNeto + "</MntNeto>\n" + "<MntIVA>" + det.MntIVA + "</MntIVA>\n"; if (det.OtrosImp != null) { foreach (var otros in det.OtrosImp) { detOtrosImp = "<OtrosImp>\n" + "<CodImp>" + otros.CodImp + "</CodImp>\n" + "<TasaImp>" + otros.TasaImp + "</TasaImp>\n" + "<MntImp>" + otros.MntImp + "</MntImp>\n" + "</OtrosImp>\n"; } } mnttotal = "<MntTotal>" + det.MntTotal + "</MntTotal>\n"; detalle += detIvaNo + detOtrosImp + mnttotal + "</Detalle>\n"; detalles += detalle; } } DateTime thisDay = DateTime.Now; String fch = String.Format("{0:yyyy-MM-ddTHH:mm:ss}", thisDay); String finLibro = "<TmstFirma>" + fch + "</TmstFirma>\n" + "</EnvioLibro>\n" + "</LibroCompraVenta>\n"; String LibroCom = cabeceraLibro + resumen + TotalesP + finResumen + detalles + finLibro; X509Certificate2 cert = FuncionesComunes.obtenerCertificado(empresa.NomCertificado); String signLibro = firmarLibroVta(LibroCom, cert); return(signLibro); }