Imports Extensiones Imports System.Data Imports Newtonsoft.Json Partial Class Finanzas_RepRazonesFinancieras Inherits ClsPaginas Private Sub Page_Load(sender As Object, e As EventArgs) Handles Me.Load If Not IsPostBack Then CargaCombos() DdlRazones.Attributes.Add("onclick", "$('#C_TxtTitulo').val ($('#C_DdlRazones option:selected').text()); ") TxtTitulo.Text = DdlRazones.SelectedItem.Text CargaDatos() End If End Sub Private Sub CargaCombos() DdlRazones.DataSource = GlobalDTFinan_RazonesFinancieras DdlRazones.DataBind() DdlSubproyectos.DataSource = GlobalDTSubProyectos(-1, CveEmpresa:=UsuarioActual.CveEmpresa) DdlSubproyectos.DataBind() DdlSubproyectos.Items.Insert(0, New ListItem("Todos", "-1")) DdlSubproyectos.SelectedIndex = 0 End Sub Private Sub CargaDatos() Dim FechaInicio As Date = MinFecha Dim FechaFin As Date = MaxFecha If TxtFechaI.Text.ToDate.Year > 1000 Then FechaInicio = TxtFechaI.Text.ToDate If TxtFechaF.Text.ToDate.Year > 1000 Then FechaFin = TxtFechaF.Text.ToDate Dim objFin As New ClsFinanzas objFin.GetRazonesFinancierasRep(UsuarioActual.CveEmpresa, DdlRazones.SelectedValue, FechaInicio, FechaFin, -1, -1) Dim dtt As DataTable = objFin.DtResultados If dtt IsNot Nothing AndAlso dtt.Columns.Count > 0 Then Select Case DdlPeriodo.SelectedValue Case "M" dtt.Columns.RemoveAt(dtt.Columns("Bim1").Ordinal) : dtt.Columns.RemoveAt(dtt.Columns("Bim2").Ordinal) dtt.Columns.RemoveAt(dtt.Columns("Bim3").Ordinal) : dtt.Columns.RemoveAt(dtt.Columns("Bim4").Ordinal) dtt.Columns.RemoveAt(dtt.Columns("Bim5").Ordinal) : dtt.Columns.RemoveAt(dtt.Columns("Bim6").Ordinal) dtt.Columns.RemoveAt(dtt.Columns("Trim1").Ordinal) : dtt.Columns.RemoveAt(dtt.Columns("Trim2").Ordinal) dtt.Columns.RemoveAt(dtt.Columns("Trim3").Ordinal) : dtt.Columns.RemoveAt(dtt.Columns("Trim4").Ordinal) dtt.Columns.RemoveAt(dtt.Columns("Cuat1").Ordinal) : dtt.Columns.RemoveAt(dtt.Columns("Cuat2").Ordinal) dtt.Columns.RemoveAt(dtt.Columns("Cuat3").Ordinal) dtt.Columns.RemoveAt(dtt.Columns("Sem1").Ordinal) : dtt.Columns.RemoveAt(dtt.Columns("Sem2").Ordinal) Case "B" dtt.Columns.RemoveAt(dtt.Columns("Ene").Ordinal) : dtt.Columns.RemoveAt(dtt.Columns("Feb").Ordinal) dtt.Columns.RemoveAt(dtt.Columns("Mar").Ordinal) : dtt.Columns.RemoveAt(dtt.Columns("Abr").Ordinal) dtt.Columns.RemoveAt(dtt.Columns("May").Ordinal) : dtt.Columns.RemoveAt(dtt.Columns("Jun").Ordinal) dtt.Columns.RemoveAt(dtt.Columns("Jul").Ordinal) : dtt.Columns.RemoveAt(dtt.Columns("Ago").Ordinal) dtt.Columns.RemoveAt(dtt.Columns("Sep").Ordinal) : dtt.Columns.RemoveAt(dtt.Columns("Oct").Ordinal) dtt.Columns.RemoveAt(dtt.Columns("Nov").Ordinal) : dtt.Columns.RemoveAt(dtt.Columns("Dic").Ordinal) dtt.Columns.RemoveAt(dtt.Columns("Trim1").Ordinal) : dtt.Columns.RemoveAt(dtt.Columns("Trim2").Ordinal) dtt.Columns.RemoveAt(dtt.Columns("Trim3").Ordinal) : dtt.Columns.RemoveAt(dtt.Columns("Trim4").Ordinal) dtt.Columns.RemoveAt(dtt.Columns("Cuat1").Ordinal) : dtt.Columns.RemoveAt(dtt.Columns("Cuat2").Ordinal) dtt.Columns.RemoveAt(dtt.Columns("Cuat3").Ordinal) dtt.Columns.RemoveAt(dtt.Columns("Sem1").Ordinal) : dtt.Columns.RemoveAt(dtt.Columns("Sem2").Ordinal) Case "T" dtt.Columns.RemoveAt(dtt.Columns("Ene").Ordinal) : dtt.Columns.RemoveAt(dtt.Columns("Feb").Ordinal) dtt.Columns.RemoveAt(dtt.Columns("Mar").Ordinal) : dtt.Columns.RemoveAt(dtt.Columns("Abr").Ordinal) dtt.Columns.RemoveAt(dtt.Columns("May").Ordinal) : dtt.Columns.RemoveAt(dtt.Columns("Jun").Ordinal) dtt.Columns.RemoveAt(dtt.Columns("Jul").Ordinal) : dtt.Columns.RemoveAt(dtt.Columns("Ago").Ordinal) dtt.Columns.RemoveAt(dtt.Columns("Sep").Ordinal) : dtt.Columns.RemoveAt(dtt.Columns("Oct").Ordinal) dtt.Columns.RemoveAt(dtt.Columns("Nov").Ordinal) : dtt.Columns.RemoveAt(dtt.Columns("Dic").Ordinal) dtt.Columns.RemoveAt(dtt.Columns("Bim1").Ordinal) : dtt.Columns.RemoveAt(dtt.Columns("Bim2").Ordinal) dtt.Columns.RemoveAt(dtt.Columns("Bim3").Ordinal) : dtt.Columns.RemoveAt(dtt.Columns("Bim4").Ordinal) dtt.Columns.RemoveAt(dtt.Columns("Bim5").Ordinal) : dtt.Columns.RemoveAt(dtt.Columns("Bim6").Ordinal) dtt.Columns.RemoveAt(dtt.Columns("Cuat1").Ordinal) : dtt.Columns.RemoveAt(dtt.Columns("Cuat2").Ordinal) dtt.Columns.RemoveAt(dtt.Columns("Cuat3").Ordinal) dtt.Columns.RemoveAt(dtt.Columns("Sem1").Ordinal) : dtt.Columns.RemoveAt(dtt.Columns("Sem2").Ordinal) Case "C" dtt.Columns.RemoveAt(dtt.Columns("Ene").Ordinal) : dtt.Columns.RemoveAt(dtt.Columns("Feb").Ordinal) dtt.Columns.RemoveAt(dtt.Columns("Mar").Ordinal) : dtt.Columns.RemoveAt(dtt.Columns("Abr").Ordinal) dtt.Columns.RemoveAt(dtt.Columns("May").Ordinal) : dtt.Columns.RemoveAt(dtt.Columns("Jun").Ordinal) dtt.Columns.RemoveAt(dtt.Columns("Jul").Ordinal) : dtt.Columns.RemoveAt(dtt.Columns("Ago").Ordinal) dtt.Columns.RemoveAt(dtt.Columns("Sep").Ordinal) : dtt.Columns.RemoveAt(dtt.Columns("Oct").Ordinal) dtt.Columns.RemoveAt(dtt.Columns("Nov").Ordinal) : dtt.Columns.RemoveAt(dtt.Columns("Dic").Ordinal) dtt.Columns.RemoveAt(dtt.Columns("Bim1").Ordinal) : dtt.Columns.RemoveAt(dtt.Columns("Bim2").Ordinal) dtt.Columns.RemoveAt(dtt.Columns("Bim3").Ordinal) : dtt.Columns.RemoveAt(dtt.Columns("Bim4").Ordinal) dtt.Columns.RemoveAt(dtt.Columns("Bim5").Ordinal) : dtt.Columns.RemoveAt(dtt.Columns("Bim6").Ordinal) dtt.Columns.RemoveAt(dtt.Columns("Trim1").Ordinal) : dtt.Columns.RemoveAt(dtt.Columns("Trim2").Ordinal) dtt.Columns.RemoveAt(dtt.Columns("Trim3").Ordinal) : dtt.Columns.RemoveAt(dtt.Columns("Trim4").Ordinal) dtt.Columns.RemoveAt(dtt.Columns("Sem1").Ordinal) : dtt.Columns.RemoveAt(dtt.Columns("Sem2").Ordinal) Case "S" dtt.Columns.RemoveAt(dtt.Columns("Ene").Ordinal) : dtt.Columns.RemoveAt(dtt.Columns("Feb").Ordinal) dtt.Columns.RemoveAt(dtt.Columns("Mar").Ordinal) : dtt.Columns.RemoveAt(dtt.Columns("Abr").Ordinal) dtt.Columns.RemoveAt(dtt.Columns("May").Ordinal) : dtt.Columns.RemoveAt(dtt.Columns("Jun").Ordinal) dtt.Columns.RemoveAt(dtt.Columns("Jul").Ordinal) : dtt.Columns.RemoveAt(dtt.Columns("Ago").Ordinal) dtt.Columns.RemoveAt(dtt.Columns("Sep").Ordinal) : dtt.Columns.RemoveAt(dtt.Columns("Oct").Ordinal) dtt.Columns.RemoveAt(dtt.Columns("Nov").Ordinal) : dtt.Columns.RemoveAt(dtt.Columns("Dic").Ordinal) dtt.Columns.RemoveAt(dtt.Columns("Bim1").Ordinal) : dtt.Columns.RemoveAt(dtt.Columns("Bim2").Ordinal) dtt.Columns.RemoveAt(dtt.Columns("Bim3").Ordinal) : dtt.Columns.RemoveAt(dtt.Columns("Bim4").Ordinal) dtt.Columns.RemoveAt(dtt.Columns("Bim5").Ordinal) : dtt.Columns.RemoveAt(dtt.Columns("Bim6").Ordinal) dtt.Columns.RemoveAt(dtt.Columns("Trim1").Ordinal) : dtt.Columns.RemoveAt(dtt.Columns("Trim2").Ordinal) dtt.Columns.RemoveAt(dtt.Columns("Trim3").Ordinal) : dtt.Columns.RemoveAt(dtt.Columns("Trim4").Ordinal) dtt.Columns.RemoveAt(dtt.Columns("Cuat1").Ordinal) : dtt.Columns.RemoveAt(dtt.Columns("Cuat2").Ordinal) dtt.Columns.RemoveAt(dtt.Columns("Cuat3").Ordinal) End Select Dim dtgrafica As DataTable = dtt.Copy dtgrafica.Columns.RemoveAt(1) Select Case DdlGrafica.SelectedValue Case "L" GeneraGraficaLineas(dtgrafica, TxtTitulo.Text) Case "B" GeneraGraficaBarras(dtgrafica, TxtTitulo.Text) Case "S" GeneraGraficaStacked(dtgrafica, TxtTitulo.Text) End Select End If GVDatos.DataSource = dtt objFin.Dispose() GVDatos.DataBind() RegistraScript($"LimpiaCeros({DdlEscala.SelectedValue});", "xyc") End Sub Private Sub GeneraGraficaLineas(data As DataTable, Titulo As String) Dim Subtitulo As String = "
Subtitulo
" Dim json As String = ToJsonString(GraficaLineas(data, Titulo, Subtitulo, "0", False, G1:=True)) Dim json2 As String = ToJsonString(GraficaLineas(data, Titulo, Subtitulo, "0", True, G1:=True)) 'Literal1.Text = json RegistraScript(String.Format("function CargaGrafica() {{$('#div_Grafica').highcharts({0});}}function CargaGrafica2() {{$('#div_Grafica').highcharts({1});}} CargaGrafica();", json, json2)) End Sub 'Private Sub GetGraficaInicio() ' Dim Gral As New ClsGenerales ' Dim ds As DataSet = Gral.GetIndicadores(UsuarioActual.CveEmpresa) ' Dim data = ds.Tables(4) ' data.Columns.RemoveAt(0) ' GeneraGraficaBarras(data, TxtTitulo.Text) ' Gral.Dispose() ' ds.Dispose() 'End Sub Private Sub GeneraGraficaBarras(data As DataTable, Titulo As String) Dim Subtitulo As String = "
Subtitulo
" Dim json As String = ToJsonString(GraficaStandar(data, "column", Titulo, Subtitulo, False)) Dim json2 As String = ToJsonString(GraficaStandar(data, "column", Titulo, Subtitulo, True)) 'Literal1.Text = json RegistraScript(String.Format("function CargaGrafica() {{$('#div_Grafica').highcharts({0});}}function CargaGrafica2() {{$('#div_Grafica').highcharts({1});}} CargaGrafica();", json, json2)) End Sub Private Sub GeneraGraficaStacked(data As DataTable, Titulo As String) Dim Subtitulo As String = "
Subtitulo
" Dim json As String = ToJsonString(GraficaStacked(data, "column", Titulo, Subtitulo, False)) Dim json2 As String = ToJsonString(GraficaStacked(data, "column", Titulo, Subtitulo, True)) 'Literal1.Text = json RegistraScript(String.Format("function CargaGrafica() {{$('#div_Grafica').highcharts({0});}}function CargaGrafica2() {{$('#div_Grafica').highcharts({1});}} CargaGrafica();", json, json2)) End Sub #Region "Metodos Graficar" Public Function GraficaLineas(data As DataTable, Optional Titulo As String = "", Optional Subtitulo As String = "", Optional SinCols As String = "0", Optional VerValor As Boolean = False, Optional G1 As Boolean = False) As HighChart Dim grafica As New HighChart 'Dim removerCols 'If IsNothing(SinCols) Then 'End If If Not IsNothing(data) Then grafica.chart = New Chart grafica.chart.type = "line" grafica.title = New Title grafica.title.text = Titulo grafica.subtitle = New Title grafica.subtitle.text = Subtitulo grafica.subtitle.useHTML = True grafica.yAxis = New Axis grafica.yAxis.title = New Title grafica.yAxis.title.text = " " grafica.xAxis = New Axis If VerValor Then grafica.plotOptions = New PlotOptions grafica.plotOptions.line = New Line grafica.plotOptions.line.dataLabels = New DataLabels grafica.plotOptions.line.dataLabels.enabled = True End If grafica.xAxis.categories = New List(Of String) Dim index As Integer = 0 Dim contador As Integer = 0 For Each col As DataColumn In data.Columns If contador = 0 Then index = contador Else grafica.xAxis.categories.Add(col.ColumnName) End If contador += 1 Next grafica.series = New List(Of Series) For Each row As DataRow In data.Rows Dim serie As New Series serie.data = New List(Of Object) Dim anterior As Double = 0 For i As Integer = 0 To data.Columns.Count - 1 If i = index Then serie.name = row(i).ToString() Else Dim actual = row(i).ToString().ToDouble serie.data.Add(actual) anterior = actual 'If Not G1 OrElse (actual >= anterior) Then 'End If End If Next grafica.series.Add(serie) Next End If Return grafica End Function Public Function GraficaStandar(data As DataTable, charttype As String, Optional Titulo As String = "", Optional Subtitulo As String = "", Optional VerValor As Boolean = False) As HighChart Dim grafica As New HighChart If Not IsNothing(data) Then grafica.chart = New Chart grafica.chart.type = charttype grafica.title = New Title grafica.title.text = Titulo grafica.subtitle = New Title grafica.subtitle.text = Subtitulo grafica.subtitle.useHTML = True grafica.yAxis = New Axis grafica.yAxis.title = New Title grafica.yAxis.title.text = " " grafica.xAxis = New Axis grafica.xAxis.categories = New List(Of String) Dim index As Integer = 0 Dim contador As Integer = 0 If charttype = "bar" Then For Each col As DataRow In data.Rows 'If contador = 0 Then ' index = contador 'Else ' grafica.xAxis.categories.Add(col(0).ToString) 'End If grafica.xAxis.categories.Add(col(0).ToString) contador += 1 Next grafica.series = New List(Of Series) For i As Integer = 1 To data.Columns.Count - 1 Dim serie As New Series serie.data = New List(Of Object) serie.name = data.Columns(i).ColumnName For Each row As DataRow In data.Rows serie.data.Add(row(i).ToString().ToDouble) Next If VerValor Then serie.dataLabels = New DataLabels serie.dataLabels.enabled = True End If grafica.series.Add(serie) Next Else For Each col As DataColumn In data.Columns If contador = 0 Then index = contador Else grafica.xAxis.categories.Add(col.ColumnName) End If contador += 1 Next grafica.series = New List(Of Series) For Each row As DataRow In data.Rows Dim serie As New Series serie.data = New List(Of Object) For i As Integer = 0 To data.Columns.Count - 1 If i = index Then serie.name = row(i).ToString() Else serie.data.Add(row(i).ToString().ToDouble) End If Next If VerValor Then serie.dataLabels = New DataLabels serie.dataLabels.enabled = True End If grafica.series.Add(serie) Next End If End If Return grafica End Function Public Function GraficaStandarB(data As DataTable, charttype As String, Optional Titulo As String = "", Optional Subtitulo As String = "", Optional VerValor As Boolean = False) As HighChart Dim grafica As New HighChart If Not IsNothing(data) Then grafica.chart = New Chart grafica.chart.type = charttype grafica.title = New Title grafica.title.text = Titulo grafica.subtitle = New Title grafica.subtitle.text = Subtitulo grafica.subtitle.useHTML = True grafica.yAxis = New Axis grafica.yAxis.title = New Title grafica.yAxis.title.text = " " grafica.xAxis = New Axis grafica.xAxis.categories = New List(Of String) Dim index As Integer = 0 Dim contador As Integer = 0 If charttype = "bar" Then For Each col As DataRow In data.Rows grafica.xAxis.categories.Add(col(0).ToString) contador += 1 Next grafica.series = New List(Of Series) For i As Integer = 1 To data.Columns.Count - 1 Dim serie As New Series serie.data = New List(Of Object) serie.name = data.Columns(i).ColumnName For Each row As DataRow In data.Rows serie.data.Add(row(i).ToString().ToDouble) Next If VerValor Then serie.dataLabels = New DataLabels serie.dataLabels.enabled = True End If grafica.series.Add(serie) Next Else For Each col As DataRow In data.Rows grafica.xAxis.categories.Add(col(0)) contador += 1 Next grafica.series = New List(Of Series) For x As Integer = 1 To data.Columns.Count - 1 Dim serie As New Series serie.data = New List(Of Object) serie.name = data.Columns(x).ColumnName For i As Integer = 0 To data.Rows.Count - 1 serie.data.Add(data.Rows(i)(x).ToString().ToDouble) Next grafica.series.Add(serie) Next End If End If Return grafica End Function Public Function GraficaStacked(data As DataTable, charttype As String, Optional Titulo As String = "", Optional Subtitulo As String = "", Optional VerValor As Boolean = False) As HighChart Dim grafica As HighChart grafica = GraficaStandar(data, charttype, Titulo, Subtitulo, VerValor) If IsNothing(grafica.plotOptions) Then grafica.plotOptions = New PlotOptions() End If If IsNothing(grafica.plotOptions.column) Then grafica.plotOptions.column = New Column End If grafica.plotOptions.column.stacking = "normal" If VerValor Then grafica.yAxis.stackLabels = New DataLabels grafica.yAxis.stackLabels.enabled = True 'grafica.yAxis.stackLabels.color = "#FFFFFF" grafica.yAxis.stackLabels.rotation = -90 grafica.yAxis.stackLabels.y = -35 End If Return grafica End Function Public Function ToJsonString(obj As Object) As String Dim settings As New JsonSerializerSettings settings.NullValueHandling = NullValueHandling.Ignore settings.Formatting = Formatting.Indented Return JsonConvert.SerializeObject(obj, settings).ToString End Function #End Region Protected Sub BtnConsultar_Click(sender As Object, e As EventArgs) CargaDatos() End Sub Protected Sub GVDatos_RowDataBound(sender As Object, e As GridViewRowEventArgs) If e.Row.RowType = DataControlRowType.DataRow Then For i = 1 To e.Row.Cells.Count - 1 'Mind that i used i=1 not 0 because the width of cells(0) has already been set Dim cell2 As TableCell = e.Row.Cells(i) cell2.CssClass = "ceros" cell2.HorizontalAlign = HorizontalAlign.Right Next End If End Sub End Class