コード例 #1
0
        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);
            }
        }
コード例 #2
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);
        }
コード例 #3
0
        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);
        }
コード例 #4
0
        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("&", "&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 = "";
            }
            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("&", "&amp;");
                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);
        }
コード例 #5
0
ファイル: xmlAdmin.cs プロジェクト: mjimenez2014/AdmToFebos
        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("&", "&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;
                }
                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);
        }
コード例 #6
0
        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);
        }
コード例 #7
0
        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.");
        }
コード例 #8
0
        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);
            }
        }
コード例 #9
0
        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);
        }