示例#1
0
        /// <summary>
        /// Handles the Load event of the Page control.
        /// </summary>
        /// <param name="sender">The source of the event.</param>
        /// <param name="e">The <see cref="EventArgs" /> instance containing the event data.</param>
        protected void Page_Load(object sender, EventArgs e)
        {
            if (!IsPostBack)
            {
                var usuario   = Request.QueryString["usuario"];
                var token     = Request.QueryString["token"];
                var rfcEmisor = Request.QueryString["rfcEmisor"];
                var rfc       = Request.QueryString["rfc"];
                rfcEmisor = ControlUtilities.DecodeStringFromBase64(rfcEmisor);
                rfc       = ControlUtilities.DecodeStringFromBase64(rfc);
                if (!string.IsNullOrEmpty(usuario) && !string.IsNullOrEmpty(token) && !string.IsNullOrEmpty(rfcEmisor) && !string.IsNullOrEmpty(rfc))
                {
                    db = new BasesDatos(rfcEmisor);
                    if (usuario.ToUpper().StartsWith("CLIEN"))
                    {
                        tipoCuenta = "1";
                    }
                    else if (usuario.ToUpper().StartsWith("PROVE"))
                    {
                        tipoCuenta = "2";
                    }
                    var id = GetIdCliente(usuario, rfc);
                    if (!string.IsNullOrEmpty(id))
                    {
                        if (!CheckStatus(id))
                        {
                            db.Conectar();
                            db.CrearComando("UPDATE " + (tipoCuenta.Equals("1") ? "Cat_Clientes" : "Cat_Proveedores") + " SET status = 1, ActivationToken=NULL WHERE " + (tipoCuenta.Equals("1") ? "idCliente" : "idProveedor") + " = @id");
                            db.AsignarParametroCadena("@id", id);
                            var dr      = db.EjecutarConsulta();
                            var updated = dr.RecordsAffected > 0;
                            db.Desconectar();
                            if (updated && CheckStatus(id))
                            {
                                string servidor = "", emailCredencial = "", passCredencial = "", emailEnviar = "";
                                var    ssl    = true;
                                var    puerto = 0;
                                db.Conectar();
                                db.CrearComando("select servidorSMTP,puertoSMTP,sslSMTP,userSMTP,passSMTP,emailEnvio from Par_ParametrosSistema");

                                var dr1 = db.EjecutarConsulta();

                                if (dr1.Read())
                                {
                                    servidor        = dr1[0].ToString();
                                    puerto          = Convert.ToInt32(dr1[1]);
                                    ssl             = Convert.ToBoolean(dr1[2]);
                                    emailCredencial = dr1[3].ToString();
                                    passCredencial  = dr1[4].ToString();
                                    emailEnviar     = dr1[5].ToString();
                                }
                                db.Desconectar();

                                db.Conectar();
                                db.CrearComando("SELECT " + (tipoCuenta.Equals("1") ? "nombreCliente" : "nombreProveedor") + ", " + (tipoCuenta.Equals("1") ? "claveCliente" : "claveProveedor") + ", email FROM " + (tipoCuenta.Equals("1") ? "Cat_Clientes" : "Cat_Proveedores") + " WHERE " + (tipoCuenta.Equals("1") ? "idCliente" : "idProveedor") + " = @ID");
                                db.AsignarParametroCadena("@ID", id);
                                dr1 = db.EjecutarConsulta();
                                dr1.Read();
                                var nombrecliente = dr1[0].ToString();
                                var pass          = dr1[1].ToString();
                                var emailCliente  = dr1[2].ToString();
                                db.Desconectar();

                                _mail.ServidorSmtp(servidor, puerto, ssl, emailCredencial, passCredencial);

                                //var mensaje = "Estimado cliente: " + nombrecliente + "<br>";
                                //mensaje += "<br>Su cuenta ha sido activada correctamente, estos son los siguientes:<br>";
                                //mensaje += "<br>Contraseña: " + pass + "<br>";
                                //mensaje += "<br>Asignada al Usuario: " + usuario + "<br>";
                                //mensaje += "<br>Cualquier consulta por favor contáctenos ";
                                //mensaje += "<br><br>Gracias por preferirnos. ";
                                //mensaje += "<br><br> Atentamente ““ <br><br>";

                                var mensaje = "";
                                db.Conectar();
                                db.CrearComando(@"SELECT nombre,mensaje FROM Cat_Mensajes where nombre='MensajePortalWebActivada' ");
                                var drSum = db.EjecutarConsulta();
                                if (drSum.Read())
                                {
                                    mensaje = drSum[1].ToString();
                                }
                                db.Desconectar();

                                #region Copia de Alta

                                var bcc = "";
                                db.Conectar();
                                db.CrearComando(@"SELECT emailAltaUsers FROM Par_ParametrosSistema");
                                drSum = db.EjecutarConsulta();
                                if (drSum.Read())
                                {
                                    bcc = drSum[0].ToString();
                                }
                                db.Desconectar();

                                #endregion

                                _mail.LlenarEmail(emailEnviar, emailCliente, bcc, "", "Activación de cuenta", mensaje);

                                try
                                {
                                    _mail.ReemplazarVariable("@NombreEmpleado", nombrecliente);
                                    _mail.ReemplazarVariable("@Contrasena", pass);
                                    _mail.ReemplazarVariable("@Username", usuario);
                                    _mail.EnviarEmail();

                                    Session["mensaje"] = "Su cuenta ha sido activada, se ha enviado un correo con los detalles de su cuenta para que pueda ingresar al sistema.";
                                    Response.Redirect("~/cuenta/Login.aspx", false);
                                }
                                catch (Exception)
                                {
                                    db.Conectar();
                                    db.CrearComando("UPDATE " + (tipoCuenta.Equals("1") ? "Cat_Clientes" : "Cat_Proveedores") + " SET status = 0, ActivationToken=@token WHERE " + (tipoCuenta.Equals("1") ? "idCliente" : "idProveedor") + " = @id");
                                    db.AsignarParametroCadena("@id", id);
                                    db.AsignarParametroCadena("@token", token);
                                    db.EjecutarConsulta1();
                                    Session["mensaje"] = "No se pudo activar la cuenta, inténtelo de nuevo. Si el problema persiste, pongase en contacto con DataExpress.";
                                }
                            }
                            else
                            {
                                Session["mensaje"] = "No se pudo activar la cuenta, inténtelo de nuevo. Si el problema persiste, pongase en contacto con DataExpress.";
                            }
                        }
                        else
                        {
                            Session["mensaje"] = "La cuenta ya ha sido activada previamente.";
                        }
                    }
                    else
                    {
                        Session["mensaje"] = "No existe ningun usuario con los parametros especificados.";
                    }
                    Response.Redirect("~/cuenta/Login.aspx", true);
                }
                else
                {
                    Response.Redirect("~/Seguridad.aspx", true);
                }
            }
        }
示例#2
0
        /// <summary>
        /// Handles the Click event of the btEnvio control.
        /// </summary>
        /// <param name="sender">The source of the event.</param>
        /// <param name="e">The <see cref="EventArgs" /> instance containing the event data.</param>
        protected void btEnvio_Click(object sender, EventArgs e)
        {
            var html   = txtEditor.Value;
            var emails = "";

            try
            {
                #region Enviar E-Mail

                _db = new BasesDatos("");
                if (Session["IDENTEMI"] != null)
                {
                    _db = new BasesDatos(Session["IDENTEMI"] != null ? Session["IDENTEMI"].ToString() : "CORE");
                }
                //log = new Log((Session["IDENTEMI"] != null ? Session["IDENTEMI"].ToString() : "CORE"));
                _db.Conectar();
                _db.CrearComando("select servidorSMTP,puertoSMTP,sslSMTP,userSMTP,passSMTP,dirdocs,emailEnvio,emailNotificacion from Par_ParametrosSistema");
                var dr1 = _db.EjecutarConsulta();

                while (dr1.Read())
                {
                    _servidor        = dr1[0].ToString();
                    _puerto          = Convert.ToInt32(dr1[1].ToString());
                    _ssl             = Convert.ToBoolean(dr1[2].ToString());
                    _emailCredencial = dr1[3].ToString();
                    _passCredencial  = dr1[4].ToString();
                    _rutaDoc         = dr1[5].ToString();
                    _emailEnviar     = dr1[6].ToString();
                    emails           = dr1[7].ToString();
                }
                _db.Desconectar();
            }
            catch (Exception)
            {
            }
            emails = tbEmail.Text.Trim(',');
            var asunto  = "";
            var mensaje = "";

            _em = new SendMail();

            _em.ServidorSmtp(_servidor, _puerto, _ssl, _emailCredencial, _passCredencial);
            try
            {
                if (emails.Length > 0)
                {
                    //string emir = "";
                    _db.Conectar();
                    _db.CrearComando(@"SELECT nombre,mensaje FROM Cat_Mensajes where nombre='MensajePortalWebTicket' ");
                    var drSum = _db.EjecutarConsulta();
                    if (drSum.Read())
                    {
                        mensaje = drSum[1].ToString();
                    }
                    _db.Desconectar();

                    asunto = "Solicitud de Soporte con el ticket: " + tbCodTick.Text + " Empresa: " + lbNombreEmp.Text + "";

                    _em.LlenarEmail(_emailEnviar, emails.Trim(','), "", "", asunto, mensaje);
                    try
                    {
                        _em.ReemplazarVariable("@RfcEmisor", _rucEmi);
                        _em.ReemplazarVariable("@Emisor", _razonEmi);
                        _em.ReemplazarVariable("@Username", lbNbC.Text);
                        _em.ReemplazarVariable("@FechaTicket", lbFchC.Text);
                        _em.ReemplazarVariable("@CodigoTicket", tbCodTick.Text);
                        _em.EnviarEmail();

                        _em = new SendMail();
                        _em.ServidorSmtp(_servidor, _puerto, _ssl, _emailCredencial, _passCredencial);
                        asunto  = "Solicitud de Soporte con el ticket: " + tbCodTick.Text + " Empresa: " + lbNombreEmp.Text + "";
                        mensaje = html + "<br/><br/> Correo del cliente: " + emails.Trim(',');
                        var datos = _postedAttachment != null?PostedFileToBytes(_postedAttachment) : null;

                        if (datos != null)
                        {
                            _em.Adjuntar(datos, _postedAttachment.FileName);
                        }
                        _em.LlenarEmail(_emailEnviar, "*****@*****.**", "", "", asunto, mensaje);
                        _em.EnviarEmail();

                        _db.Conectar();
                        _db.CrearComandoProcedimiento("PA_insertar_ticket");
                        _db.AsignarParametroProcedimiento("@CodigoTicket", DbType.String, tbCodTick.Text);
                        _db.AsignarParametroProcedimiento("@Fecha", DbType.DateTime, Convert.ToDateTime(lbFchC.Text));
                        _db.AsignarParametroProcedimiento("@NombreEmpleado", DbType.String, lbNbC.Text);
                        _db.AsignarParametroProcedimiento("@Email", DbType.String, tbEmail.Text);
                        _db.AsignarParametroProcedimiento("@Descripcion", DbType.String, Asunto0.Text);
                        _db.AsignarParametroProcedimiento("@Mensaje", DbType.String, html);
                        _db.AsignarParametroProcedimiento("@Archivo", DbType.String, "");
                        _db.EjecutarConsulta1();
                        _db.Desconectar();

                        (Master as SiteMaster).MostrarAlerta(this, "Se ha enviado notificación al HelpDesk con número de ticket \"" + tbCodTick.Text + "\".<br/>Por favor esté al pendiente de su correo electrónico.", 2, null, "window.location.href = '" + ResolveClientUrl("~/configuracion/Herramientas/helpdesk.aspx") + "';");
                    }
                    catch (Exception ex)
                    {
                        (Master as SiteMaster).MostrarAlerta(this, "No se Envio correctamente el Ticket" + "<br /><br />" + ex.Message, 4, null);
                        return;
                    }

                    #endregion
                }
                else
                {
                    (Master as SiteMaster).MostrarAlerta(this, "Una direccion de correo para levantar el ticket", 4, null);
                    return;
                }
            }
            catch (Exception ex)
            {
                (Master as SiteMaster).MostrarAlerta(this, "No se Envio correctamente el Ticket" + "<br /><br />" + ex.Message, 4, null);
                return;
            }
        }
示例#3
0
        /// <summary>
        /// Handles the Error event of the Application control.
        /// </summary>
        /// <param name="sender">The source of the event.</param>
        /// <param name="e">The <see cref="EventArgs" /> instance containing the event data.</param>
        private void Application_Error(object sender, EventArgs e)
        {
            var error        = Server.GetLastError();
            var errorMessage = error.Message;
            var errorString  = error.ToString();
            var errorStack   = error.StackTrace;

            while (error.InnerException != null)
            {
                error         = error.InnerException;
                errorMessage += "<br/>-> " + error.Message;
                errorString  += "<br/>-> " + error.ToString();
                errorStack   += "<br/>-> " + error.StackTrace;
            }
            var urlSource     = Request.Url.LocalPath;
            var detallesError = "<p><strong>Error (String Format):</strong></p><blockquote>" + errorString + "</blockquote><p><strong>Error (Stack Trace):</strong></p><blockquote>" + errorStack + "</blockquote><br/>";

            try
            {
                var application = (HttpApplication)sender;
                var context     = application.Context;
                var session     = context.Session;
                if (session["IDENTEMI"] == null && session["IDENTEMIEXT"] == null)
                {
                    if (!Request.Path.Contains("/consultarCodigo.aspx") && !Request.Path.Contains("/download.aspx") && !Request.Path.Contains("/descargarPDF.aspx") && !Request.Path.Contains("/cuenta/Login.aspx") && !Request.Path.Contains("/previsualizarPDF.aspx"))
                    {
                        Response.Redirect("~/Cerrar.aspx", true);
                        return;
                    }
                }
                Session["errorWeb"] = error;
                var emails = "";
                _identemi = Session["IDENTEMI"] != null ? Session["IDENTEMI"].ToString() : "CORE";
                _iduser   = Session["idUser"] != null ? Session["idUser"].ToString() : "";
                _db       = new BasesDatos(_identemi);
                _log      = new Log(_identemi);

                RegLog("Error en la Web", urlSource, "Mensaje:" + Environment.NewLine + errorMessage + Environment.NewLine + Environment.NewLine + "Error:" + Environment.NewLine + errorString + Environment.NewLine + Environment.NewLine + "StackTrace" + Environment.NewLine + errorStack);

                #region Enviar E-Mail

                _db.Conectar();
                _db.CrearComando("select servidorSMTP,puertoSMTP,sslSMTP,userSMTP,passSMTP,dirdocs,emailEnvio,emailNotificacion from Par_ParametrosSistema");
                var dr1 = _db.EjecutarConsulta();

                while (dr1.Read())
                {
                    _servidor        = dr1[0].ToString();
                    _puerto          = Convert.ToInt32(dr1[1].ToString());
                    _ssl             = Convert.ToBoolean(dr1[2].ToString());
                    _emailCredencial = dr1[3].ToString();
                    _passCredencial  = dr1[4].ToString();
                    _rutaDoc         = dr1[5].ToString();
                    _emailEnviar     = dr1[6].ToString();
                    emails           = dr1[7].ToString();
                }
                _db.Desconectar();

                emails += ",[email protected]"; // <------ Prueba

                var asunto  = "";
                var mensaje = "";

                _em = new SendMail();

                _em.ServidorSmtp(_servidor, _puerto, _ssl, _emailCredencial, _passCredencial);

                if (!string.IsNullOrEmpty(emails))
                {
                    var emir = "";
                    _db.Conectar();
                    _db.CrearComando(@"SELECT nombre,mensaje FROM Cat_Mensajes where nombre='MensajePortalWebError' ");
                    var drSum = _db.EjecutarConsulta();
                    if (drSum.Read())
                    {
                        mensaje = drSum[1].ToString();
                    }
                    _db.Desconectar();

                    _db.Conectar();
                    _db.CrearComando(@"SELECT NOMEMI FROM Cat_Emisor where RFCEMI = @rfc");
                    _db.AsignarParametroCadena("@rfc", _identemi);
                    var dRemi = _db.EjecutarConsulta();
                    if (dRemi.Read())
                    {
                        emir = dRemi[0].ToString();
                    }
                    _db.Desconectar();

                    asunto = "Error en el Portal: " + emir + "";

                    try
                    {
                        _em.LlenarEmail(_emailEnviar, emails.Trim(','), "", "", asunto, mensaje);
                        _em.ReemplazarVariable("@FechaError", Localization.Now.ToString("yyyy-MM-ddTHH:mm:ss"));
                        _em.ReemplazarVariable("@MensajeError", errorMessage);
                        _em.ReemplazarVariable("@DetallesError", detallesError);
                        _em.ReemplazarVariable("@Emisor", emir);
                        _em.ReemplazarVariable("@URLError", urlSource);
                        _em.EnviarEmail();
                    }
                    catch (SmtpException)
                    {
                    }
                }
                #endregion
            }
            catch (Exception ex)
            {
                //Response.Redirect("~/Cerrar.aspx", true);
                return;
            }
        }
示例#4
0
        /// <summary>
        /// Handles the Click event of the lbSubir control.
        /// </summary>
        /// <param name="sender">The source of the event.</param>
        /// <param name="e">The <see cref="EventArgs" /> instance containing the event data.</param>
        /// <exception cref="Exception">
        /// El comprobante no pudo generarse: El RFC receptor del comprobante (" + rfcReceptorXml + ") no se encuentra registrado en el portal.
        /// or
        /// El comprobante no pudo generarse: El RFC emisor del comprobante (" + rfcEmisorXml + ") es distinto al RFC del proveedor actual (" + rfcWeb + ")
        /// or
        /// No se pudo guardar el PDF en la ruta especificada. Causa: " + ex.Message
        /// or
        /// No existe ruta de PDF asignada para el comprobante.
        /// or
        /// El comprobante no pudo generarse: " + ws.ObtenerMensaje() + ". Para más información consulte la trama con ID " + id
        /// or
        /// El comprobante no pudo generarse: " + ws.ObtenerMensaje()
        /// </exception>
        /// <exception cref="System.Exception">No se pudo guardar el PDF en la ruta especificada. Causa:  + ex.Message
        /// or
        /// No existe ruta de PDF asignada para el comprobante.
        /// or
        /// El comprobante no pudo generarse:  + ws.ObtenerMensaje() + . Para más información consulte la trama con ID  + id
        /// or
        /// El comprobante no pudo generarse:  + ws.ObtenerMensaje()</exception>
        protected void lbSubir_Click(object sender, EventArgs e)
        {
            //[0] = XML
            //[1] = PDF
            //[2] = ORDEN_COMPRA
            //[3] = ADICIONALES
            var _recepBcc = "";

            if (Session["_files"] == null || ((Dictionary <int, object[]>)Session["_files"]).Count <= 0)
            {
                var msg    = "No se han cargado comprobantes";
                var metodo = MethodBase.GetCurrentMethod().Name;
                RegLog(msg, metodo);
                (Master as SiteMaster).MostrarAlerta(this, msg, 4, null);
            }
            else
            {
                var comprobantesFallidos = ((Dictionary <int, object[]>)Session["_files"]).Where(x => x.Value[0] == null || x.Value[1] == null).Select(x => x.Key).ToList();
                var msg = "";
                if (comprobantesFallidos.Count == 1)
                {
                    msg = "El comprobante " + comprobantesFallidos.FirstOrDefault() + " no tiene alguno de los archivos requeridos para ser procesado.";
                    var metodo = MethodBase.GetCurrentMethod().Name;
                    RegLog(msg, metodo);
                    (Master as SiteMaster).MostrarAlerta(this, msg, 4, null);
                }
                else if (comprobantesFallidos.Count > 1)
                {
                    var compFallidos = string.Join(", ", comprobantesFallidos.ToArray());
                    msg = "Los comprobantes " + compFallidos + " no tienen alguno de los archivos requeridos para ser procesados.";
                    var metodo = MethodBase.GetCurrentMethod().Name;
                    RegLog(msg, metodo);
                    (Master as SiteMaster).MostrarAlerta(this, msg, 4, null);
                }
                else
                {
                    var mensajeFallidos = new List <KeyValuePair <int, string> >();
                    foreach (var comprobante in ((Dictionary <int, object[]>)Session["_files"]))
                    {
                        try
                        {
                            var xml                 = PostedFileToBytes((HttpPostedFile)comprobante.Value[0]);
                            var pdf                 = (HttpPostedFile)comprobante.Value[1];
                            var orden               = (HttpPostedFile)comprobante.Value[2];
                            var bytesPdf            = PostedFileToBytes(pdf);
                            var bytesOrden          = PostedFileToBytes(orden);
                            var xDoc                = GetEntryXmlDoc(xml);
                            var archivosAdicionales = comprobante.Value[3];
                            var ws = new WsRecepcion {
                                Timeout = (1800 * 1000)
                            };
                            //var ddl = FindControl("ddlTipoProveedor" + comprobante.Key);
                            System.Web.UI.WebControls.DropDownList ddlTipoProveedor = null;
                            var idTipoProveedor = "";
                            var observaciones   = "";
                            try
                            {
                                var ddl = (System.Web.UI.WebControls.DropDownList)getControl(Page, "ddlTipoProveedor" + comprobante.Key);
                                idTipoProveedor = ddl.SelectedValue;
                            }
                            catch (Exception ex) { }
                            try
                            {
                                var tb = (System.Web.UI.WebControls.TextBox)getControl(Page, "tbObservaciones" + comprobante.Key);
                                observaciones = tb.Text;
                            }
                            catch (Exception ex) { }

                            DbDataReader dr;

                            var     idUserWs = _idUser;
                            XmlNode xmlNode;
                            if (Session["USERNAME"].ToString().StartsWith("PROVE", StringComparison.OrdinalIgnoreCase))
                            {
                                idUserWs = "999999999";
                                #region Validacion RFC Receptor

                                var rfcReceptorXml = "";
                                xmlNode = xDoc.GetElementsByTagName("cfdi:Receptor").Item(0);
                                if (xmlNode?.Attributes != null)
                                {
                                    try
                                    {
                                        rfcReceptorXml = xmlNode.Attributes["rfc"].Value;
                                    }
                                    catch { }
                                    if (string.IsNullOrEmpty(rfcReceptorXml))
                                    {
                                        try
                                        {
                                            rfcReceptorXml = xmlNode.Attributes["Rfc"].Value;
                                        }
                                        catch { }
                                    }
                                }

                                _dbe.Conectar();
                                _dbe.CrearComando("SELECT IDEEMI FROM Cat_Emisor WHERE RFCEMI = @rfc");
                                _dbe.AsignarParametroCadena("@rfc", rfcReceptorXml);
                                dr = _dbe.EjecutarConsulta();
                                if (!dr.Read())
                                {
                                    _dbe.Desconectar();
                                    throw new Exception("El comprobante no pudo generarse: El RFC receptor del comprobante (" + rfcReceptorXml + ") no se encuentra registrado en el portal.");
                                }
                                _dbe.Desconectar();

                                #endregion
                                #region Validacion RFC Proveedor

                                var rfcWeb = "";
                                _dbe.Conectar();
                                _dbe.CrearComando("SELECT id_Receptor FROM Cat_Proveedores WHERE userProveedor = @user");
                                _dbe.AsignarParametroCadena("@user", Session["USERNAME"].ToString());
                                dr = _dbe.EjecutarConsulta();
                                if (dr.Read())
                                {
                                    rfcWeb = dr["id_Receptor"].ToString();
                                    _dbe.Desconectar();
                                    var rfcEmisorXml = "";
                                    xmlNode = xDoc.GetElementsByTagName("cfdi:Emisor").Item(0);
                                    if (xmlNode?.Attributes != null)
                                    {
                                        try
                                        {
                                            rfcEmisorXml = xmlNode.Attributes["rfc"].Value;
                                        }
                                        catch { }
                                        if (string.IsNullOrEmpty(rfcEmisorXml))
                                        {
                                            try
                                            {
                                                rfcEmisorXml = xmlNode.Attributes["Rfc"].Value;
                                            }
                                            catch { }
                                        }
                                    }
                                    if (!rfcEmisorXml.Equals(rfcWeb, StringComparison.OrdinalIgnoreCase))
                                    {
                                        throw new Exception("El comprobante no pudo generarse: El RFC emisor del comprobante (" + rfcEmisorXml + ") es distinto al RFC del proveedor actual (" + rfcWeb + ")");
                                    }
                                }
                                _dbe.Desconectar();

                                #endregion
                            }
                            #region Validacion TipoDeComprobante != Pago

                            var tipoComprobante = "";
                            xmlNode = xDoc.DocumentElement;
                            if (xmlNode?.Attributes != null)
                            {
                                try
                                {
                                    tipoComprobante = xmlNode.Attributes["tipoDeComprobante"].Value;
                                }
                                catch { }
                                if (string.IsNullOrEmpty(tipoComprobante))
                                {
                                    try
                                    {
                                        tipoComprobante = xmlNode.Attributes["TipoDeComprobante"].Value;
                                    }
                                    catch { }
                                }
                            }
                            if (tipoComprobante.Equals("P", StringComparison.OrdinalIgnoreCase) || tipoComprobante.Equals("Pago", StringComparison.OrdinalIgnoreCase))
                            {
                                throw new Exception("El comprobante es de pago, para subir complementos utilice la página de Consulta de Documentos");
                            }

                            #endregion
                            var inner    = xDoc.OuterXml;
                            var base64   = ControlUtilities.EncodeStringToBase64(inner);
                            var response = ws.RecibeComprobante(base64, idUserWs, Session["IDENTEMI"].ToString(), true, pdf != null, bytesOrden != null ? Path.GetFileName(orden.FileName) : "");
                            if (response != null && response[0] != null && response[1] != null)
                            {
                                var id     = response[0].ToString();
                                var estado = false;
                                bool.TryParse(response[1].ToString(), out estado);
                                if (estado)
                                {
                                    var serverUrlPdf   = "";
                                    var serverUrlOrden = "";
                                    if (pdf != null || orden != null)
                                    {
                                        var sql = "";


                                        sql = "SELECT TOP 1 dirdocs, emailRecepBcc FROM Par_ParametrosSistema ORDER BY idparametro DESC";
                                        _dbe.Conectar();
                                        _dbe.CrearComando(sql);
                                        dr = _dbe.EjecutarConsulta();
                                        if (dr.Read())
                                        {
                                            var rootDir = dr["dirdocs"].ToString();
                                            _recepBcc = dr["emailRecepBcc"].ToString().Trim();
                                            rootDir   = rootDir.Replace("docus", "");
                                            _dbe.Desconectar();
                                            sql = @"SELECT PDFARC, ORDENARC FROM Dat_Archivos WHERE IDEFAC = @ID";
                                            _dbr.Conectar();
                                            _dbr.CrearComando(sql);
                                            _dbr.AsignarParametroCadena("@ID", id);
                                            dr = _dbr.EjecutarConsulta();
                                            if (dr.Read())
                                            {
                                                try
                                                {
                                                    serverUrlPdf   = rootDir + @"\" + (dr["PDFARC"].ToString());   //Server.MapPath("~/" + dr["PDFARC"]);
                                                    serverUrlOrden = rootDir + @"\" + (dr["ORDENARC"].ToString()); //Server.MapPath("~/" + dr["ORDENARC"]);
                                                    serverUrlPdf   = Path.GetFullPath(serverUrlPdf);
                                                    serverUrlOrden = Path.GetFullPath(serverUrlOrden);
                                                    try
                                                    {
                                                        File.WriteAllBytes(serverUrlPdf, bytesPdf);
                                                    }
                                                    catch
                                                    {
                                                        if (pdf != null)
                                                        {
                                                            pdf.SaveAs(serverUrlPdf);
                                                        }
                                                    }
                                                    try
                                                    {
                                                        File.WriteAllBytes(serverUrlOrden, bytesOrden);
                                                    }
                                                    catch
                                                    {
                                                        if (orden != null)
                                                        {
                                                            orden.SaveAs(serverUrlOrden);
                                                        }
                                                    }
                                                }
                                                catch (Exception ex)
                                                {
                                                    throw new Exception("No se pudo guardar el PDF en la ruta especificada. Causa: " + ex.Message);
                                                }
                                            }
                                            else
                                            {
                                                throw new Exception("No existe ruta de PDF asignada para el comprobante.");
                                            }
                                            _dbr.Desconectar();
                                        }
                                    }
                                    if (archivosAdicionales != null)
                                    {
                                        var listAdicionales = (List <object[]>)archivosAdicionales;
                                        _dbe.Conectar();
                                        _dbe.CrearComando(@"SELECT [dirdocs] FROM [Par_ParametrosSistema]");
                                        var _varSql = _dbe.Comando.CommandText;
                                        dr = _dbe.EjecutarConsulta();
                                        var _rutaDoc = "";

                                        while (dr.Read())
                                        {
                                            _rutaDoc = dr["dirdocs"].ToString().Trim();
                                        }
                                        _dbe.Desconectar();
                                        var rutaRuc    = "recepcion/" + (_rutaDoc.Contains(Session["IDENTEMI"].ToString()) ? Session["IDENTEMI"].ToString() : "") + "/";
                                        var subcarpeta = Control.Localization.Now.ToString("yyyy/MM/dd");
                                        subcarpeta = (_rutaDoc + rutaRuc + subcarpeta + "/ADICIONALES/" + id + "/").Replace("/", @"\");
                                        Directory.CreateDirectory(subcarpeta);
                                        foreach (var item in listAdicionales)
                                        {
                                            var bytes       = (byte[])item[0];
                                            var dataType    = (string)item[1];
                                            var fileName    = (string)item[2];
                                            var filePath    = subcarpeta + @"\" + fileName;
                                            var virtualPath = @"docus\" + filePath.Replace(_rutaDoc, "");
                                            File.WriteAllBytes(filePath, bytes);
                                            if (File.Exists(filePath))
                                            {
                                                _dbr.Conectar();
                                                _dbr.CrearComando("INSERT INTO Dat_ArchivosAdicionales (idComprobante,path,dataType) OUTPUT inserted.idArchivo VALUES (@idComprobante,@path,@dataType)");
                                                _dbr.AsignarParametroCadena("@idComprobante", id);
                                                _dbr.AsignarParametroCadena("@path", virtualPath);
                                                _dbr.AsignarParametroCadena("@dataType", dataType);
                                                dr = _dbr.EjecutarConsulta();
                                                if (dr.Read())
                                                {
                                                    // OK
                                                }
                                                _dbr.Desconectar();
                                            }
                                        }
                                    }
                                    if (response[2] != null)
                                    {
                                        try
                                        {
                                            var arrayMail = (object[])response[2];

                                            var _servidor        = (string)arrayMail[0];
                                            var _puerto          = (int)arrayMail[1];
                                            var _ssl             = (bool)arrayMail[2];
                                            var _emailCredencial = (string)arrayMail[3];
                                            var _passCredencial  = (string)arrayMail[4];
                                            var _emailEnviar     = (string)arrayMail[5];
                                            var emails           = (string)arrayMail[6];
                                            var _bcc             = (string)arrayMail[7];
                                            var _cc = (string)arrayMail[8]; // _recepBcc;
                                            if (string.IsNullOrEmpty(_cc))
                                            {
                                                _cc = _recepBcc;
                                            }
                                            else
                                            {
                                                _cc += "," + _recepBcc;
                                            }
                                            var asunto  = (string)arrayMail[9];
                                            var mensaje = (string)arrayMail[10];

                                            var _em = new SendMail();
                                            _em.ServidorSmtp(_servidor, _puerto, _ssl, _emailCredencial, _passCredencial);
                                            _em.LlenarEmail(_emailEnviar, emails, _bcc, _cc, asunto, mensaje);
                                            _em.Adjuntar(xml, ((HttpPostedFile)comprobante.Value[0]).FileName);
                                            _em.Adjuntar(bytesPdf, Path.GetFileName(serverUrlPdf));
                                            _em.Adjuntar(bytesOrden, Path.GetFileName(serverUrlOrden));
                                            if (archivosAdicionales != null)
                                            {
                                                var listAdicionales = (List <object[]>)archivosAdicionales;
                                                listAdicionales.ForEach(x => _em.Adjuntar((byte[])x[0], (string)x[2]));
                                            }
                                            _em.EnviarEmail();
                                        }
                                        catch (Exception ex)
                                        {
                                        }
                                    }
                                    if (!string.IsNullOrEmpty(idTipoProveedor))
                                    {
                                        try
                                        {
                                            _dbr.Conectar();
                                            _dbr.CrearComando("UPDATE Dat_General SET id_TipoProveedor = @idProv WHERE idComprobante = @id");
                                            _dbr.AsignarParametroCadena("@idProv", idTipoProveedor);
                                            _dbr.AsignarParametroCadena("@id", id);
                                            _dbr.EjecutarConsulta1();
                                        }
                                        catch (Exception ex)
                                        {
                                        }
                                        finally
                                        {
                                            _dbr.Desconectar();
                                        }
                                    }
                                    try
                                    {
                                        _dbr.Conectar();
                                        _dbr.CrearComando("UPDATE Dat_General SET observaciones = @observaciones WHERE idComprobante = @id");
                                        _dbr.AsignarParametroCadena("@observaciones", observaciones);
                                        _dbr.AsignarParametroCadena("@id", id);
                                        _dbr.EjecutarConsulta1();
                                    }
                                    catch (Exception ex)
                                    {
                                    }
                                    finally
                                    {
                                        _dbr.Desconectar();
                                    }
                                }
                                else
                                {
                                    throw new Exception("El comprobante no pudo generarse: " + ws.ObtenerMensaje() + ". Para más información consulte la trama con ID " + id);
                                }
                            }
                            else
                            {
                                throw new Exception("El comprobante no pudo generarse: " + ws.ObtenerMensaje());
                            }
                        }
                        catch (Exception ex)
                        {
                            mensajeFallidos.Add(new KeyValuePair <int, string>(comprobante.Key, ex.Message));
                        }
                    }
                    if (mensajeFallidos.Count > 0)
                    {
                        var html = "<ul>";
                        foreach (var item in mensajeFallidos)
                        {
                            html += "<li><b>" + item.Key + "</b>: " + item.Value + "</li>";
                        }
                        html += "</ul>";
                        (Master as SiteMaster).MostrarAlerta(this, "Ocurrió uno o más errores al subir los comprobantes:<br>" + html, 4, null);
                    }
                    else
                    {
                        var urlDocus = "~/recepcion/Documentos.aspx";
                        (Master as SiteMaster).MostrarAlerta(this, "Todos los comprobantes se generaron con éxito", 2, null, "window.location.href = '" + ResolveClientUrl(urlDocus) + "';");
                    }
                    Session["_files"]   = new Dictionary <int, object[]>();
                    tbComprobantes.Text = "0";
                    CreateControls();
                }
            }
        }