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