Option Explicit On Option Strict On Imports System.Activities.Statements Imports System.Data Imports System.IO Imports System.Security.Cryptography.X509Certificates Imports ADSNetLibrary.SIGAPI.Services.SAT.DescargaCFDI Imports DocumentFormat.OpenXml.Math Imports DocumentFormat.OpenXml.Packaging Imports DocumentFormat.OpenXml.Spreadsheet Imports Extensiones 'Imports Microsoft.AspNet.SignalR.Client 'Imports ChatHub Partial Class Site Inherits BaseMasterPage #Region "Propiedades" Public Overrides Property EsPopup() As Boolean Get Return Convert.ToBoolean(HdnEsPopup.Value) End Get Set(value As Boolean) HdnEsPopup.Value = value.ToString() End Set End Property Public Overrides Property PopupWidth() As Integer Get Return HdnPopUpWidth.Value.ToEntero() End Get Set(value As Integer) HdnPopUpWidth.Value = value.ToString() End Set End Property Public Property userx As Usuario Get userx = DirectCast(ViewState("userx"), Usuario) End Get Set(value As Usuario) ViewState("userx") = value End Set End Property Public Property countNotificaciones As Integer Get countNotificaciones = If(IsNothing(ViewState("countNotificaciones")), 0, ViewState("countNotificaciones").ToString().ToEntero()) End Get Set(value As Integer) ViewState("countNotificaciones") = value End Set End Property Public Property UsuarioCve As Integer Get Return 15 End Get Set(value As Integer) End Set End Property #End Region Protected Sub Page_Load(sender As Object, e As EventArgs) Handles Me.Load If Not Page.IsPostBack Then lblFecha.Text = DateTime.Now.ToString("dd.MMMyyyy HH:mm tt") MasterChat.Visible = False If Request("Masterimpoup") IsNot Nothing AndAlso Request("Masterimpoup").ToString() = "true" Then EsPopup = True If UsuarioActual IsNot Nothing Then HdnCveE.Value = UsuarioActual.CveEmpresa.ToString() HdnCveU.Value = UsuarioActual.CveUsuario.ToString() LitTit.Text = UsuarioActual.Empresa.EmpresaEncabezado If UsuarioActual.CveUsuario = 100 Then LitTit.Text = String.Format(" Mi Empresa de Ventas ({0}) ", UsuarioActual.CveEmpresa) TxtTit.Visible = True End If If UsuarioActual.Empresa.CvePlataforma = 3 Then lnkFavicon.Href = "/Imagenes/favicongps.ico" tTitulo.Text = "SIGNALS GPS" LnkDescargarManual.Visible = False Else lnkFavicon.Href = "/Imagenes/favicon.ico" End If Dim thisURL As String = Request.Url.Segments(Request.Url.Segments.Count - 1) If thisURL.Equals("WizardRegistro.aspx") OrElse thisURL.Equals("Registro.aspx") Then LitTit.Text = "AD  Soluciones en TI " End If userx = New Usuario userx.Empresa = New Empresa userx.Referencia = Encripta(UsuarioActual.CveUsuario.ToString()) userx.Usuario = Encripta(UsuarioActual.Usuario) userx.Liga = Encripta(UsuarioActual.Rol) If UsuarioActual.CvePersonal > 0 Then DivPerfil.Visible = True End If If UsuarioActual.CveRol = 1 Then userx.Empresa.Direccion = Encripta("-999") userx.Empresa.Empresa = Encripta("ADSistemas") Else '.Empresa.Direccion = Encripta(UsuarioActual.Empresa.CveEmpresa) 'userx.Empresa.Empresa = Encripta(UsuarioActual.Empresa.Empresa) End If If UsuarioActual.CveRol = 1200 Then dashboard.Visible = True End If If UsuarioActual.CvePlataforma = 6 Or UsuarioActual.CvePlataforma = 7 Then header_search_bar.Visible = False header_notification_bar.Visible = False End If If EsPopup Then scriptoppner.Visible = True divMenu.Visible = False RegistraScript("$('#barradenavegacion').css({'display':'none'})") divContenido.Attributes.CssStyle("background") = "white" divpagecontainer.Attributes.CssStyle("margin") = "0px !important" headertitleh3.Attributes.CssStyle("margin") = "0px !important" divtopmenu.Visible = False Else 'MyChat_Init(Nothing, Nothing) '19/05/2018 - CARGA TIPO DE CAMBIO '2018.08.14, se movió de la linea 59 a la actual CargaTipoCambio() CargaUsuario() If UsuarioActual.Portal = False Then CreaMenu() 'Configuracion() CargaBuscadores() End If End If CargarNotificaciones() Else Dim thisURL As String = Request.Url.Segments(Request.Url.Segments.Count - 1) If thisURL.Equals("WizardRegistro.aspx") OrElse thisURL.Equals("Registro.aspx") Then LitTit.Text = "AD  Soluciones en TI " End If End If Else 'VALIDACION DE SEGURIDAD, EN LA QUE SE VALIDA QUE LA EMPRESA EN LA QUE SE GENERO LA PAGINA SEA LA MISMA A LA DE LA SESION, 'DE NO SER ASI, SE REDIRECCIONA A INICIO. If UsuarioActual IsNot Nothing AndAlso (HdnCveE.Value <> UsuarioActual.CveEmpresa.ToString() OrElse HdnCveU.Value <> UsuarioActual.CveUsuario.ToString()) Then Response.Redirect(FormsAuthentication.DefaultUrl) End If End If End Sub Private Sub CargaUsuario() If UsuarioActual IsNot Nothing Then 'LtMasterNombre.Text = UsuarioActual.Nombre LtMasterPerfil.Text = UsuarioActual.Rol LtMasterUsuario.Text = UsuarioActual.Usuario 'DivConfiguracionEmpresa.Visible = True ' BtnConfiguracionEmpresa.Attributes.Add("onclick", String.Format("javascript:document.location.href='/Sistemas/Empresa.aspx?CveEmpresa={0}'", UsuarioActual.CveEmpresa)) BtnConfiguracionEmpresa.Visible = False DivConfiguracionEmpresa.Visible = False 'loadchat() If UsuarioActual.CveRol = 1 OrElse UsuarioActual.ModoSimulacion Then DivCambiarUsuario.Visible = True BtnCambiarUsuario.Attributes.Add("onclick", "javascript:AbrirVentana('/Sistemas/PopUpCambiaUsuario.aspx');") End If If UsuarioActual.ModoSimulacionXEmpresa Then '.TienePermisoProceso(ADSSession.ADSSessionConfig.procesomodosimulacion) Then DivCambiarUsuarioEmpresa.Visible = True BtnCambiarUsuarioEmpresa.Attributes.Add("onclick", "javascript:AbrirVentana('/Sistemas/PopUpCambiaUsuarioEmpresa.aspx');") End If If UsuarioActual.MultipleEmpresa Then BtnCambiarEmpresa.Attributes.Add("onclick", "javascript:AbrirVentana('/Sistemas/PopUpSeleccionarEmpresa.aspx');") DivCambiarEmpresa.Visible = True End If End If End Sub 'Private Sub loadchat() ' If UsuarioActual.CveRol = 1 OrElse UsuarioActual.ModoSimulacion Then ' Dim GlobalDTUsuarios As DataTable = DirectCast(Application("GlobalDTUsuarios"), DataTable) ' Dim userconectedlist As List(Of Integer) = (From c In MyHub.usuarios Select c.CveUsuario Distinct).ToList ' Dim prefix As String = "" ' Dim userstring As New StringBuilder ' For Each item As Integer In userconectedlist ' userstring.AppendFormat("{0}{1} ", prefix, item) ' prefix = "," ' Next ' stringusers = userstring.ToString() ' If userconectedlist.Count > 0 Then ' GlobalDTUsuarios = GlobalDTUsuarios.FiltraParametros(String.Format("CveUsuario in ({0})", userstring)) ' RptChatEmpresa.DataSource = GlobalDTUsuarios.FiltraParametros("CveEmpresa >1", "", {"CveEmpresa", "Empresa"}) ' RptChatEmpresa.DataBind() ' End If ' MasterChat.Visible = True ' End If 'End Sub 'Private stringusers As String = "0" 'Private Sub RptChatEmpresa_ItemDataBound(sender As Object, e As RepeaterItemEventArgs) Handles RptChatEmpresa.ItemDataBound ' Dim CveEmpresa As Integer = e.Item.DataItem("CveEmpresa").ToString().ToEntero() ' Dim GlobalDTUsuarios As DataTable = DirectCast(Application("GlobalDTUsuarios"), DataTable).FiltraParametros(String.Format("CveUsuario in ({0}) AND CveEmpresa ={1}", stringusers, CveEmpresa)) ' Dim rpthijo As Repeater = DirectCast(e.Item.FindControl("RPTChatuser"), Repeater) ' rpthijo.DataSource = GlobalDTUsuarios ' rpthijo.DataBind() 'End Sub Private Sub CargaBuscadores() 'Proveedores If UsuarioActual.TienePermisoPagina(37) Then tdProv.Visible = True If UsuarioActual.TienePermisoPagina(679) Then tdProvBancos.Visible = True 'Clientes If UsuarioActual.TienePermisoPagina(26) Then tdCliente.Visible = True 'Factura de Ventas If UsuarioActual.TienePermisoPagina(6) Then tdVentas.Visible = True 'Personal If UsuarioActual.TienePermisoPagina(46) Then tdPersonal.Visible = True 'Buscar Productos servicios If UsuarioActual.TienePermisoPagina(13) Then tdBuscarPs.Visible = True 'Compras If UsuarioActual.TienePermisoPagina(38) Then tdCompras.Visible = True 'Ordenes Servicio If UsuarioActual.TienePermisoPagina(135) Then tdOS.Visible = True 'Ingresos / Egresos If UsuarioActual.TienePermisoPagina(153) Then tdCheques.Visible = True 'Órdenes de Compra If UsuarioActual.TienePermisoPagina(103) Then tdOC.Visible = True 'Cuando es Requisición If UsuarioActual.TienePermisoPagina(250) Then tdOC.Visible = True 'Inventarios Movimientos If UsuarioActual.TienePermisoPagina(219) Then TdMovInv.Visible = True 'Prospectos If UsuarioActual.TienePermisoPagina(181) Then tdProspectos.Visible = True : ImgProspecto.Attributes.Add("onclick", "AbrirVentana('/Prospectos/PopUpBuscarProspectos.aspx',980,547,'popBuscarProspectos');") 'ProspectosRedes If UsuarioActual.TienePermisoPagina(183) Then tdProspectos.Visible = True : ImgProspecto.Attributes.Add("onclick", "AbrirVentana('/Prospectos/PopUpBuscarProspectos.aspx?Opt=Redes',980,547,'popBuscarProspectos');") 'ProspectosG15 If UsuarioActual.TienePermisoPagina(187) Then tdProspectos.Visible = True : ImgProspecto.Attributes.Add("onclick", "AbrirVentana('/Prospectos/PopUpBuscarProspectos.aspx?Opt=Atn',980,547,'popBuscarProspectos');") 'ProspectosSIP If UsuarioActual.TienePermisoPagina(207) Then tdProspectos.Visible = True : ImgProspecto.Attributes.Add("onclick", "AbrirVentana('/Prospectos/PopUpBuscarProspectos.aspx?Opt=SIP',980,547,'popBuscarProspectos');") If UsuarioActual.TienePermisoPagina(392) Then tdProspectos.Visible = True : ImgProspecto.Attributes.Add("onclick", "AbrirVentana('/Prospeccion/PopUpBuscarProspectos.aspx',980,547,'popBuscarProspectos');") If UsuarioActual.TienePermisoPagina(228) OrElse UsuarioActual.TienePermisoPagina(6) Then tdBExi.Visible = True 'Contratos If UsuarioActual.TienePermisoPagina(313) Then TdContratos.Visible = True 'BUSCAR MILITANTE If UsuarioActual.TienePermisoPagina(1001) Then tdBuscarMilitante.Visible = True 'Orden Produccion' If UsuarioActual.TienePermisoPagina(816) Then tdOP.Visible = True 'Produccion' If UsuarioActual.TienePermisoPagina(823) Then tdP.Visible = True 'BUSCAR ACERCAMIENTO CRM' If UsuarioActual.TienePermisoProceso(251) Then TdCRMAcercamientos.Visible = True 'Busca Activo Fijo If UsuarioActual.TienePermisoPagina(62) Then TdBuscaActivoFijo.Visible = True End Sub Protected Sub CerrarSesion_Click(sender As Object, e As EventArgs) Handles BtnCerrarSesion.ServerClick 'If Request.ServerVariables("URL").ToUpper.Contiene("/PortalCliente/PortalCliente.aspx".ToUpper) Then ' UsuarioActual.CerrarSession(1) 'ElseIf Request.ServerVariables("URL").ToUpper.Contiene("/PortalProveedores/PortalProveedor.aspx".ToUpper) Then ' UsuarioActual.CerrarSession(2) 'Else 'MyHub.RemoveConexiones(UsuarioActual.CveUsuario) Usuario.CerrarSession() 'End If 'UsuarioActual.Dispose() End Sub 'Private Sub Configuracion() ' Dim dt As New DataTable ' dt.ReadXml(String.Format("{0}\Menu\ERP\{1}_Conf.xml", AppDomain.CurrentDomain.BaseDirectory, UsuarioActual.CveUsuario)) 'End Sub Private Function ArmarMenu(CveModulo As Integer, ByRef menuobj As MenuModal) As MenuModal Dim listaModulos As EnumerableRowCollection(Of DataRow) = From i In menuobj.dt.AsEnumerable Where i!CvePadre.Equals(CveModulo) Order By i!Orden Dim cveModuloActual As Integer Dim liga As String Dim modulo As String Dim estilo As String For Each drP As DataRow In listaModulos cveModuloActual = drP("CveModulo").ToString().ToEntero() liga = If(drP("PopUp").ToString() = "S", String.Format("javascript:AbrirVentana('{0}',{1},{2},'N');", drP("LIGA"), drP("ANCHO"), drP("ALTO")), If(drP("IsAngular").ToString() = "1", String.Format("{1}:84{0}", drP("LIGA"), menuobj.strdomain), drP("LIGA").ToString())) modulo = drP("Modulo").ToString() estilo = If(drP("Estilo").ToString() <> "", String.Format("", drP("Estilo")), "") If menuobj.CveModuloSeleccionado = cveModuloActual Then menuobj.HeaderBar.AppendFormat("
  • {1}
  • ", liga, modulo) menuobj.CveModuloSeleccionadoPadre = CveModulo menuobj.ScriptColorGrupoModulo = ColorPage(drP("CveGrupoModulo").ToString().ToEntero()) End If menuobj.MenuHTML.AppendFormat("
  • {2}{3}", cveModuloActual, liga, estilo, modulo) drP.Delete() menuobj.dt.AcceptChanges() If menuobj.dt.COUNT("CveModulo", String.Format("CvePadre ={0}", cveModuloActual)) > 0 Then menuobj.MenuHTML.AppendFormat("") Else menuobj.MenuHTML.Append("") End If menuobj.MenuHTML.AppendFormat("{0}", modulo.RemoveDiacritics()) For Each items As String In menuobj.modpadres menuobj.MenuHTML.Append("-") menuobj.MenuHTML.AppendFormat("{0}", items) Next menuobj.MenuHTML.Append("") menuobj.MenuHTML.Append("
  • ") Next Return menuobj End Function Private Sub CreaMenu() Dim dt As New DataTable If UsuarioActual.CveRol = 1200 Then dt.ReadXml(String.Format("{0}\Menu\GPS\{1}.xml", AppDomain.CurrentDomain.BaseDirectory, UsuarioActual.CveUsuario)) Else dt.ReadXml(String.Format("{0}\Menu\ERP\{1}.xml", AppDomain.CurrentDomain.BaseDirectory, UsuarioActual.CveUsuario)) End If 'Dim Inicio = From i In dt.AsEnumerable Where i!CvePadre.Equals(0) Order By i!Orden Dim CveModuloPadre, CveModuloPadreSeleccionado, CveModuloHijoSeleccionado, CveModuloNietoSeleccionado As Integer 'Dim CveModulo As Integer = CveModulomasterpage.Text.ToEntero() 'Dim ScriptColorGrupoModulo As String = "" 'Dim LinkBase = "javascript:;" 'Dim HeaderBar As New StringBuilder("
  • Inicio") 'Dim LinkPadre = "" 'Dim Linkpapa As String = "" 'Dim LinkHijo = "" 'Dim Linkson As String = "" 'Dim LinkNieto = "" 'Dim ClassActive As String 'CveModuloPadreSeleccionado = 0 : CveModuloHijoSeleccionado = 0 : CveModuloNietoSeleccionado = 0 Dim menuobj = New MenuModal() menuobj.dt = dt menuobj.CveModuloSeleccionado = CveModulomasterpage.Text.ToEntero() menuobj.strdomain = Request.Url.AbsoluteUri.Replace(Request.Url.PathAndQuery, "").Replace("https://", "http://") If Request.Url.Port <> 80 Then menuobj.strdomain = menuobj.strdomain.Replace(String.Format(":{0}", Request.Url.Port), "") End If Dim newmenuobj As MenuModal = ArmarMenu(0, menuobj) 'Dim MenuHTML As New StringBuilder 'For Each drP As DataRow In Inicio ' CveModuloPadre = drP("CveModulo").ToString().ToEntero() ' LinkPadre = drP("LIGA").ToString() ' If drP("PopUp").ToString() = "S" Then LinkPadre = String.Format("javascript:AbrirVentana('{0}',{1},{2},'N');", drP("LIGA"), drP("ANCHO"), drP("ALTO")) ' Dim Hijos = From h In dt.AsEnumerable Where h!CvePadre.Equals(CveModuloPadre) Order By h!Orden ' If CveModulo = drP("CveModulo").ToString().ToEntero() Then ' HeaderBar.AppendFormat("
  • {1}", LinkPadre, drP("Modulo").ToString()) ' ScriptColorGrupoModulo = ColorPage(drP("CveGrupoModulo").ToString().ToEntero()) ' End If ' If Hijos.Count > 0 Then ' Linkpapa = LinkPadre ' LinkPadre = LinkBase ' MenuHTML.AppendFormat("
  • {2}{1}
  • ") ' Else ' MenuHTML.AppendFormat("
  • {2}{1}
  • ", LinkPadre, drP("Modulo"), If(drP("Estilo").ToString() <> "", String.Format("", drP("Estilo")), "")) ' End If 'Next 'If CveModuloPadreSeleccionado > 0 Then ' menuobj.MenuHTML = menuobj.MenuHTML.Replace(String.Format("id='m{0}'", CveModuloPadreSeleccionado), String.Format("id='m{0}' class='active open'", CveModuloPadreSeleccionado)) ' menuobj.MenuHTML = menuobj.MenuHTML.Replace(String.Format("id='j{0}'", CveModuloPadreSeleccionado), String.Format("id='j{0}' class='selected'", CveModuloPadreSeleccionado)) 'Else 'End If 'If CveModuloHijoSeleccionado > 0 Then ' menuobj.MenuHTML = menuobj.MenuHTML.Replace(String.Format("id='m{0}'", CveModuloHijoSeleccionado), String.Format("id='m{0}' class='open'", CveModuloHijoSeleccionado)) ' menuobj.MenuHTML = menuobj.MenuHTML.Replace(String.Format("id='j{0}'", CveModuloHijoSeleccionado), String.Format("id='j{0}' class='selected'", CveModuloHijoSeleccionado)) 'End If 'HeaderBar.AppendFormat("") menuobj.HeaderBar.AppendFormat("{0}", menuobj.ScriptColorGrupoModulo) BarraNavegacion.Text = menuobj.HeaderBar.ToString() 'CargaMenu(MenuHTML) Menu.Text = menuobj.MenuHTML.ToString() menuobj.MenuHTML.Clear() menuobj.HeaderBar.Clear() End Sub Private Function ColorPage(value As Integer) As String Select Case value Case 1 Return "" Case 2 Return "" Case 3 Return "" Case 4 Return "" Case 5 Return "" Case 6 Return "" Case 7 Return "" Case 8 Return "" Case 9 Return "" Case 10 Return "" Case Else Return "" End Select End Function 'Private Sub CargaMenu(Texto As StringBuilder) ' Menu.Text = Texto.ToString() 'End Sub #Region "Notificaciones" Private Sub CargarNotificaciones() Dim Notificaciones As New StringBuilder 'Bienvenida Notificaciones.Append(ItemNotificaciones("Bienvenido a SIG ", "Hoy", "fa fa-bullhorn")) 'Certificado Dim fechacer As String = ConvertCER() If fechacer = "" OrElse (((DateTime.Parse(fechacer).Month - Now.Month) < 2) AndAlso ((DateTime.Parse(fechacer).Year - Now.Year) < 1)) Then Notificaciones.Append(ItemNotificaciones("Su certificado expira en: ", fechacer, Tipo:="warning")) countNotificaciones = countNotificaciones + 1 Else Notificaciones.Append(ItemNotificaciones("Su certificado expira en: ", fechacer)) End If 'C A R G A - A L E R T A S - O R D E N E S D E C O M P R A If UsuarioActual.CveUsuario = 1459 Then Dim OC As New ClsOC If OC.GetOrdenesPendientes("-1", 0, UsuarioActual.CveEmpresa, -1, -1, -1, UsuarioActual.CveUsuario, -1) Then If (OC.DtResultados.Rows.Count > 0) Then Notificaciones.Append(ItemNotificaciones(String.Format("Orden de Compra por atender {0}", OC.DtResultados.Rows.Count), Ico:="fa fa-tags", Tipo:="warning", Link:="/OC/RepOC.aspx")) countNotificaciones = countNotificaciones + 1 End If End If OC.Dispose() End If If UsuarioActual.TienePermisoProceso(303) Then Using objgen As New ClsGenerales pnlNotificacionSAT.Visible = True objgen.SAT_DescargaSolicitudesAddNotificacionesCOUNT(UsuarioActual.CveEmpresa) If objgen.DtResultados.Rows.Count > 0 Then For Each dtrow As DataRow In objgen.DtResultados.Rows If dtrow("Contador").ToString().ToEntero() > 0 Then Notificaciones.Append(ItemNotificaciones(String.Format("Se registro una solicitud de descarga del SAT con {0} XML", dtrow("Contador")), Ico:="fa fa-tags", Tipo:="info", Link:=String.Format("javascript:$('#{0}').val({1});$('#{2}').click();", TxtCveNotisat.ClientID, dtrow("CveSolicitudSat").ToString().ToEntero(), btnoknotisat.ClientID), tonewpage:=False)) ' countNotificaciones = countNotificaciones + 1 End If Next End If End Using End If ''OC Pendientes por atender 'Dim OC As New ClsOC 'If OC.GetOrdenesPendientes("-1", 0, UsuarioActual.CveEmpresa, -1, -1, -1, UsuarioActual.CveUsuario, -1) Then ' Notificaciones.Append(ItemNotificaciones(String.Format("REQ/OC por atender: {0}", OC.DtResultados.Rows.Count), Tipo:=If(OC.DtResultados.Rows.Count > 3, "warning", "info"), Link:="/OC/RepOC.aspx")) ' If OC.DtResultados.Rows.Count > 0 Then ' countNotificaciones = countNotificaciones + 1 ' End If 'End If 'OC.Dispose() LtlMNotificaciones.Text = String.Format("{0}{1}", LtlMNotificaciones.Text, Notificaciones.ToString()) Notificaciones.Clear() End Sub Private Function ConvertCER() As String Try Dim Archivo As String = String.Format("{0}Certificados\{1}", UsuarioActual.Empresa.Ruta, UsuarioActual.Empresa.ArchivoCer) If File.Exists(Archivo) Then Dim CerFile As New FileStream(Archivo, FileMode.Open, FileAccess.Read) Dim Size As Integer = CerFile.Length.ToString().ToEntero() Dim Data As Byte() = New Byte(Size - 1) {} Size = CerFile.Read(Data, 0, Size) CerFile.Close() CerFile.Dispose() Dim x509 As New X509Certificate2() x509.Import(Data) Dim Retorno = x509.NotAfter.ToShortDateString() x509 = Nothing Data = Nothing Return Retorno End If Catch ex As Exception Return "" End Try Return "" End Function #End Region #Region "TIPO DE CAMBIO" Private Sub CargaTipoCambio() If Application("TipoCambioActual") Is Nothing Then 'sino existe el dato, lo carga por ser la primera vez Application("TipoCambioActual") = GetTipoCambio() Else Dim TCA As TipoCambioActual = CType(Application("TipoCambioActual"), TipoCambioActual) If TCA.Fecha <> DateTime.Today Then Application("TipoCambioActual") = GetTipoCambio() End If End If lblTipoCambio.Text = String.Format(" | TC {0:C4}", CType(Application("TipoCambioActual"), TipoCambioActual).TipoCambio) End Sub Private Function GetTipoCambio() As TipoCambioActual 'Dim Retorno As TipoCambioActual Dim TCT As Decimal = 0 Dim ObjGenerales As ClsGenerales = New ClsGenerales If ObjGenerales.GetTipoCambio(-1, DateTime.Today) Then If ObjGenerales.DtResultados.Rows.Count > 0 Then TCT = ObjGenerales.DtResultados(0)("TipoCambio").ToString().ToDecimal() End If End If ObjGenerales.Dispose() Return New TipoCambioActual With {.Fecha = DateTime.Today, .TipoCambio = TCT} End Function #End Region Protected Sub btnoknotisat_Click(sender As Object, e As EventArgs) GVnotiFoliosSAT.DataSource = New DataTable() Using objgen As New ClsGenerales objgen.SAT_DescargaSolicitudesAddNotificaciones(UsuarioActual.CveEmpresa, TxtCveNotisat.Text.ToEntero()) GVnotiFoliosSAT.DataSource = objgen.DtResultados End Using GVnotiFoliosSAT.DataBind() UpNotificacionesFoliosSAT.Update() RegistraScript(String.Format("$('#{0}').modal();", pnlNotificacionSAT.ClientID)) End Sub Protected Sub LnkDescargarManual_Click(sender As Object, e As EventArgs) Dim ruta As String = $"{ModExtensiones.DirectorioEmpresas}Grales\ManualSIG.pdf" Dim Archivo As New System.IO.FileInfo(ruta) Try If Archivo IsNot Nothing Then If Archivo.Exists Then HttpContext.Current.Response.Clear() HttpContext.Current.Response.ClearContent() HttpContext.Current.Response.ContentType = "application/octet-stream" HttpContext.Current.Response.AppendHeader("Content-disposition", String.Format("attachment; filename={0}", "Manual Plataforma SIG 2021.pdf")) HttpContext.Current.Response.AddHeader("Content-Length", Archivo.Length.ToString()) HttpContext.Current.Response.TransmitFile(ruta) Response.Flush() ' send it to the client to download HttpContext.Current.Response.SuppressContent = True HttpContext.Current.ApplicationInstance.CompleteRequest() Response.End() Else Alert("El archivo no existe", TipoMensaje.MsgAdvertencia) End If End If Catch ex As Exception End Try End Sub End Class