public string cs_fxSignature(string Id)
        {
            string            XML      = string.Empty;
            clsEntityDocument cabecera = new clsEntityDocument(localDB);

            cabecera.cs_fxObtenerUnoPorId(Id);
            if (cabecera.Cs_pr_XML.Trim() == "" && cabecera.Cs_pr_CDR.Trim() == "")
            {
                switch (cabecera.Cs_tag_InvoiceTypeCode)
                {
                case "01":
                    XML = new clsNegocioCEFactura(localDB).cs_pxGenerarXMLAString(Id);
                    break;

                case "03":
                    XML = new clsNegocioCEBoleta(localDB).cs_pxGenerarXMLAString(Id);
                    break;

                case "07":
                    XML = new clsNegocioCENotaCredito(localDB).cs_pxGenerarXMLAString(Id);
                    break;

                case "08":
                    XML = new clsNegocioCENotaDebito(localDB).cs_pxGenerarXMLAString(Id);
                    break;
                }
            }
            else
            {
                XML = cabecera.Cs_pr_XML;
            }
            XML = XML.Replace("cbc:", "");
            XML = XML.Replace("cac:", "");
            XML = XML.Replace("ext:", "");
            XML = XML.Replace("ds:", "");
            string      estructura = string.Empty;
            XmlDocument xmlDoc     = new XmlDocument();

            xmlDoc.LoadXml(XML);
            return(xmlDoc.GetElementsByTagName("SignatureValue")[0].InnerText);
        }
        /// <summary>
        /// Genera un Comprobate de pago: factura, boletas y sus NC y ND asociadas.
        /// </summary>
        /// <param name="Id">Id del comprobante.</param>
        /// <returns>NombreTributo del archivo generado.</returns>
        public string cs_pxGenerarCE(string Id)
        {
            string fila = string.Empty;
            string archivo_nombre_XML = string.Empty, archivo_nombre_ZIP = string.Empty, archivo_nombre_directorio = string.Empty;

            try
            {
                clsEntityDocument cabecera = new clsEntityDocument(localDB);
                cabecera.cs_fxObtenerUnoPorId(Id);
                //fila = cs_pxGenerarXMLaString(Id,localDB);
                switch (cabecera.Cs_tag_InvoiceTypeCode)
                {
                case "01":
                    fila = new clsNegocioCEFactura(localDB).cs_pxGenerarXMLAString(Id);
                    break;

                case "03":
                    fila = new clsNegocioCEBoleta(localDB).cs_pxGenerarXMLAString(Id);
                    break;

                case "07":
                    fila = new clsNegocioCENotaCredito(localDB).cs_pxGenerarXMLAString(Id);
                    break;

                case "08":
                    fila = new clsNegocioCENotaDebito(localDB).cs_pxGenerarXMLAString(Id);
                    break;
                }
                #region Genera los nombres de archivo
                archivo_nombre_XML        = declarante.Cs_pr_Ruc + "-" + cabecera.Cs_tag_InvoiceTypeCode + "-" + cabecera.Cs_tag_ID + ".xml";
                archivo_nombre_ZIP        = declarante.Cs_pr_Ruc + "-" + cabecera.Cs_tag_InvoiceTypeCode + "-" + cabecera.Cs_tag_ID + ".zip";
                archivo_nombre_directorio = declarante.Cs_pr_Ruc + "-" + cabecera.Cs_tag_InvoiceTypeCode + "-" + cabecera.Cs_tag_ID;
                string comprobante_ruta        = new clsBaseConfiguracion().cs_prRutadocumentosenvio + "/";
                string comprobante_ruta_nombre = comprobante_ruta + archivo_nombre_directorio + "\\" + archivo_nombre_XML;

                if (File.Exists(comprobante_ruta_nombre))   // Sí existe el archivo comprobante_ruta_nombre
                {
                    File.Delete(comprobante_ruta_nombre);   // se elimina
                }

                if (Directory.Exists(comprobante_ruta + archivo_nombre_directorio))            // Sí existe el directorio
                {
                    var dir = new DirectoryInfo(comprobante_ruta + archivo_nombre_directorio); // Instancia de la clase DirectoryInfo
                    dir.Attributes = dir.Attributes & ~FileAttributes.ReadOnly;                // Asignación de su atributo
                    dir.Delete(true);                                                          // Permitir eliminar de forma recursiva
                }

                if (!Directory.Exists(comprobante_ruta + archivo_nombre_directorio))         // Sí no existe el directorio
                {
                    Directory.CreateDirectory(comprobante_ruta + archivo_nombre_directorio); // Lo creamos ;)
                }

                if (!File.Exists(comprobante_ruta_nombre))        // Sí el archivo no existe
                {
                    File.Create(comprobante_ruta_nombre).Close(); // También lo creamos ;) ;)
                }

                StreamWriter sw1 = new StreamWriter(
                    File.Open(comprobante_ruta_nombre, FileMode.OpenOrCreate), Encoding.GetEncoding("ISO-8859-1")); // Códifica el archivo generado
                sw1.WriteLine(fila); sw1.Close(); fila = string.Empty;
                DirectoryInfo x = new DirectoryInfo(comprobante_ruta + archivo_nombre_directorio);
                cs_prComprimirZIP(x);
                #endregion
            }
            catch (Exception ex)
            {
                clsBaseLog.cs_pxRegistarAdd("clsNegocioCE cs_pxGenerarCE" + ex.ToString());
            }
            return(archivo_nombre_ZIP);
        }