Option Explicit On Option Strict On Imports System.Data Imports System.Web.Compilation Imports Extensiones Imports Microsoft.Reporting.WebForms Partial Class Ventas_RepTopClientesVentas Inherits ClsPaginas Private Property DtClientes As DataTable Get Return DirectCast(ViewState("DtClientes"), DataTable) End Get Set(value As DataTable) ViewState("DtClientes") = value End Set End Property Protected Sub Page_Load(sender As Object, e As System.EventArgs) Handles Me.Load If Not IsPostBack Then CargarFiltros() CargaDatos() End If End Sub Private Sub CargarFiltros() Dim tablaAños As New DataTable Dim idAño As New DataColumn idAño.ColumnName = "idAño" idAño.Caption = "idAño" idAño.DataType = System.Type.GetType("System.Int32") Dim Año As New DataColumn Año.ColumnName = "Año" Año.Caption = "Año" Año.DataType = System.Type.GetType("System.Int32") tablaAños.Columns.Add(idAño) tablaAños.Columns.Add(Año) Dim añoActual As Integer = DateTime.Now.Year For AñoIndex As Integer = añoActual To (añoActual - 10) Step -1 Dim row As DataRow = tablaAños.NewRow() row("idAño") = AñoIndex row("Año") = AñoIndex tablaAños.Rows.Add(row) Next DdlAño.DataSource = tablaAños DdlAño.DataBind() DdlSubProyecto.DataSource = GlobalDTSubProyectos(-1, CveEmpresa:=UsuarioActual.CveEmpresa) DdlSubProyecto.DataBind() DdlSubProyecto.Items.Insert(0, New ListItem("Todos", "-1")) TxtTop.Text = "20" End Sub Private Sub CargaDatos() Dim ObjVentas As New ClsVentas If ObjVentas.GetRepTopClientesVentas(UsuarioActual.CveEmpresa, DdlMes.SelectedValue.ToEntero, DdlAño.SelectedValue.ToEntero, TxtTop.Text.ToEntero, DdlSubProyecto.SelectedValue.ToEntero) Then GvM.DataSource = ObjVentas.DtResultados DtClientes = ObjVentas.DtResultados End If ObjVentas.Dispose() GvM.DataBind() End Sub Protected Sub BtnConsultar_Click() Handles BtnConsultar.Click CargaDatos() UppGrid.Update() End Sub Protected Sub ImgImprimir_Click(sender As Object, e As EventArgs) Handles ImgImprimir.Click Dim params As New List(Of ReportParameter) params.Add(New ReportParameter("pEmp", UsuarioActual.Empresa.Empresa)) params.Add(New ReportParameter("UsuarioImprimio", UsuarioActual.Nombre)) params.Add(New ReportParameter("FechaImpresion", DateTime.Now.ToString)) Dim Imagen As New System.IO.FileInfo(String.Format("{0}/Logo.png", UsuarioActual.Empresa.Ruta)) Dim logouri = String.Format("{0}://{1}:{2}/Empresas/{3}/Logo.png", Request.Url.Scheme, Request.Url.Host, Request.Url.Port, UsuarioActual.CveEmpresa) If Imagen.Exists Then params.Add(New ReportParameter("pImg", logouri)) Else params.Add(New ReportParameter("pImg", "")) End If ImprimirPDF("Empresas/Grales/Formatos/TopClientes.rdlc", DtClientes, params, String.Format("ReporteVentas-{0}", Now.ToDateTime.ToShortDateString), Formato:="PDF") End Sub Protected Sub LnkVerGrafica_Click(sender As Object, e As EventArgs) If Not DtClientes IsNot Nothing AndAlso DtClientes.Rows.Count > 0 Then Alert("No hay datos disponibles", TipoMensaje.MsgAdvertencia) Exit Sub End If LblTituloGrafica.Text = $"Agrupado por: Clientes" RegistraScript("$('#DivModalGrafica').modal('show')") CambioGrafica() End Sub Private Sub CambioGrafica() Dim DtClientesAux As New DataTable DtClientesAux = DtClientes.FiltraParametros("CveCliente > 0") Dim Dt As New DataTable() Dt.Columns.Add("Cliente") Dt.Columns.Add("Importe") For Each Dr As DataRow In DtClientesAux.Rows Dim Row As DataRow = Nothing Row = Dt.NewRow() Row("Cliente") = Dr("NombreComercial").ToString Row("Importe") = Dr("ImporteAcumulado").ToString.FormatoNumero Dt.Rows.Add(Row) Next Dim query = From s In Dt.AsEnumerable() Select New With {.Cliente = s("Cliente").ToString(), .Importe = s("Importe").ToString().ToDouble()} Dim json As String = Newtonsoft.Json.JsonConvert.SerializeObject(query) RegistraScript($"CargaGraficaBarras({json})", "22") UPModalProd.Update() End Sub End Class