/// <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); } } }
/// <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; } }
/// <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; } }
/// <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(); } } }