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