Option Explicit On Option Strict On Imports System.Data Imports Extensiones Partial Class Contabilidad2_RepAnexoCatalogoAnual Inherits ClsPaginas #Region " PROPIEDADES " Public Property CveCuenta As Integer Get Return ViewState("CveCuenta").ToString.ToEntero End Get Set(value As Integer) ViewState("CveCuenta") = value End Set End Property Public Property EsVertical As Integer Get Return ViewState("EsVertical").ToString.ToEntero End Get Set(value As Integer) ViewState("EsVertical") = value End Set End Property Private Property listacolores As List(Of String) Get Return DirectCast(ViewState("listacolores"), List(Of String)) End Get Set(value As List(Of String)) ViewState("listacolores") = value End Set End Property Private Property listaCamposanios As List(Of String()) Get Return DirectCast(ViewState("listaCamposanios"), List(Of String())) End Get Set(value As List(Of String())) ViewState("listaCamposanios") = value End Set End Property Public Property DtHeadersCount As Integer Get If ViewState("DtHeadersCount") Is Nothing Then Return -1 Else Return ViewState("DtHeadersCount").ToString.ToEntero End If End Get Set(value As Integer) ViewState("DtHeadersCount") = value End Set End Property Private Property DTHeaders As DataTable Get If ViewState("DTHeaders") Is Nothing Then Return New DataTable Else Return DirectCast(ViewState("DTHeaders"), DataTable) End If End Get Set(value As DataTable) ViewState("DTHeaders") = value End Set End Property Private Property DTDatos As DataTable Get If ViewState("DTDatos") Is Nothing Then Return New DataTable Else Return DirectCast(ViewState("DTDatos"), DataTable) End If End Get Set(value As DataTable) ViewState("DTDatos") = value End Set End Property #End Region Protected Sub Page_Load(sender As Object, e As System.EventArgs) Handles Me.Load If Not IsPostBack Then listacolores = New List(Of String) listaCamposanios = New List(Of String()) listacolores.Add("#FF0F00") listacolores.Add("#FF6600") listacolores.Add("#F8FF01") listacolores.Add("#04D215") listacolores.Add("#2A0CD0") listacolores.Add("#8A0CCF") listacolores.Add("#CD0D74") listacolores.Add("#754DEB") listacolores.Add("#DDDDDD") listacolores.Add("#999999") listacolores.Add("#000000") listacolores.Add("#FF0F00") Dim EjercicioParametro, EjercicioParametroFinal, SubProyectoParametro, DivisorParametro, Periodo As Integer CveCuenta = IfNull(Request("CveCuenta"), "-1").ToString.ToEntero EjercicioParametro = IfNull(Request("Ejercicio"), "-1").ToString.ToEntero EjercicioParametroFinal = IfNull(Request("EjercicioFinal"), "-1").ToString.ToEntero SubProyectoParametro = IfNull(Request("CveSubproyecto"), "-1").ToString.ToEntero DivisorParametro = IfNull(Request("Divisor"), "-1").ToString.ToEntero Periodo = IfNull(Request("Periodo"), "-1").ToString.ToEntero EsVertical = IfNull(Request("V"), "-1").ToString.ToEntero InicializaValores() DdlEjercicio.SelectedValueExist(EjercicioParametro.ToString) DdlEjercicio2.SelectedValueExist(EjercicioParametroFinal.ToString) DdlSubProyecto.SelectedValueExist(SubProyectoParametro.ToString) DdlDivisor.SelectedValueExist(DivisorParametro.ToString) DdlPeriodo.SelectedValueExist(Periodo) CargaDatos() End If End Sub #Region " INICIALIZA VALORES " Private Sub InicializaValores() CargaCombos() End Sub Private Sub CargaCombos() Dim Conta As New ClsContabilidad If Conta.GetEjercicios(UsuarioActual.CveEmpresa) Then DdlEjercicio.DataSource = Conta.DtResultados DdlEjercicio2.DataSource = Conta.DtResultados Else DdlEjercicio.DataSource = Nothing DdlEjercicio2.DataSource = Nothing End If Conta.Dispose() DdlEjercicio.DataBind() DdlEjercicio2.DataBind() DdlSubProyecto.DataSource = GlobalDTSubProyectos(-1, -1, UsuarioActual.CveEmpresa) DdlSubProyecto.DataBind() DdlSubProyecto.Items.Insert(0, New ListItem("Todos", "-1")) DdlSubProyecto.SelectedValue = "-1" End Sub #End Region #Region " CARGA DATOS " Protected Sub BtnCargaAsignados_Click(sender As Object, e As EventArgs) Handles BtnCargaAsignados.Click CargaDatos() End Sub Private Sub CargaDatos() DTHeaders = New DataTable DTDatos = New DataTable Dim Conta As New ClsContabilidad DtHeadersCount = 0 If Conta.GetAnexoCatalogoAnual(CveCuenta, DdlEjercicio.SelectedValue.ToEntero, DdlSubProyecto.SelectedValue.ToEntero, UsuarioActual.CveEmpresa, DdlEjercicio2.SelectedValue.ToEntero, DdlDivisor.SelectedValue.ToEntero, UsuarioActual.CveUsuario, DdlPeriodo.SelectedValue.ToEntero) Then 'Dim DtHeaders As DataTable = Conta.DSResultados.Tables(0) DTHeaders = Conta.DSResultados.Tables(0) DTDatos = Conta.DSResultados.Tables(1) DtHeadersCount = DTHeaders.Rows.Count GvAnual.DataSource = Conta.DSResultados.Tables(1) Dim Index = 2 For Index = 2 To GvAnual.Columns.Count - 1 GvAnual.Columns(Index).Visible = False Next Index listaCamposanios.Clear() Index = 2 For Each Dr As DataRow In DTHeaders.Rows GvAnual.Columns(Index).Visible = True CType(GvAnual.Columns(Index), BoundField).DataField = String.Format("Ejercicio{0}", Dr("Ejercicio")) GvAnual.Columns(Index).HeaderText = Dr("Ejercicio").ToString listaCamposanios.Add(New String() {String.Format("Ejercicio{0}", Dr("Ejercicio")), Dr("Ejercicio").ToString()}) If Not DdlEjercicio.SelectedValue = Dr("Ejercicio").ToString Then If EsVertical <> 1 Then GvAnual.Columns(Index + 1).Visible = True CType(GvAnual.Columns(Index + 1), BoundField).DataField = String.Format("Ejercicio{0}VariacionImporte", Dr("Ejercicio")) GvAnual.Columns(Index + 1).HeaderText = "$" End If GvAnual.Columns(Index + 2).Visible = True CType(GvAnual.Columns(Index + 2), BoundField).DataField = String.Format("Ejercicio{0}{1}Porcentaje", Dr("Ejercicio"), If(EsVertical = 1, "", "Variacion")) GvAnual.Columns(Index + 2).HeaderText = "%" End If Index += 3 Next GvAnual.DataBind() UpAnual.Update() Else GvAnual.DataSource = Nothing End If GvAnual.DataBind() UpAnual.Update() 'RegistraScript($"LimpiaCeros({DdlDivisor.SelectedValue});") 'RegistraScript($"LimpiaCeros();") Conta.Dispose() If GvAnual.Rows.Count > 0 Then LnkExportar.Visible = True UpAcciones.Update() End If End Sub #End Region #Region " GV ROW DATABOUND " Protected Sub GvAnual_RowDataBound(sender As Object, e As GridViewRowEventArgs) Handles GvAnual.RowDataBound If e.Row.RowType = DataControlRowType.DataRow Then setgraficaCC(e) If e.Row.RowIndex = 0 Then e.Row.Style.Add("font-weight", "bold") End If If e.Row.DataKey("Level").ToEntero = 0 Then e.Row.CssClass = "Totales" End If If e.Row.DataKey("Level").ToEntero = 1 Then e.Row.CssClass = "SubTotales" End If Dim CveCunetaRow As Integer = e.Row.DataKey("CveCuenta").ToEntero Dim inicial As Boolean = True Dim Index As Integer = 2 For Each DRow As DataRow In DTHeaders.Rows Dim Importe As Decimal = e.Row.DBCampo($"Ejercicio{DRow("Ejercicio")}").ToDecimal Dim Anio As Integer = DRow("Ejercicio").ToString.ToEntero If Importe <> 0 Then e.Row.Cells(Index).Text = $"{ If(DdlDivisor.SelectedValue.ToEntero > 1, Importe.ToString("###,###,##0"), Importe.ToString("###,###,###.00")) }" End If If e.Row.Cells(Index + 1).Text.ToDecimal = 0 Then e.Row.Cells(Index + 1).Text = "-" ElseIf e.Row.Cells(Index + 1).Text.ToDecimal < 0 Then e.Row.Cells(Index + 1).ForeColor = Drawing.Color.Red End If If e.Row.Cells(Index + 2).Text.Replace("%", "").ToDecimal = 0 Then e.Row.Cells(Index + 2).Text = "-" ElseIf e.Row.Cells(Index + 2).Text.Replace("%", "").ToDecimal < 0 Then e.Row.Cells(Index + 2).ForeColor = Drawing.Color.Red End If 'If inicial Then ' Index = Indice + 1 ' inicial = False ' Continue For 'End If Index += 3 Next 'e.Row.Cells(1).Style.Add("text-indent", $"{e.Row.DBCampo("Level").ToString.ToEntero * 2}em") End If End Sub Public Sub setgraficaCC(e As GridViewRowEventArgs) Dim lista As New List(Of Object) Dim colorindex As Integer = 0 For Each campo As String() In listaCamposanios lista.Add(New With {.Texto = campo(1), .Valor = e.Row.DBCampo(campo(0)).ToDecimal(), .Color = listacolores(colorindex)}) colorindex = colorindex + 1 If colorindex >= listacolores.Count Then colorindex = 0 End If Next e.Row.FCHyperLink("Hypgrafica").Attributes.Add("data-values", Newtonsoft.Json.JsonConvert.SerializeObject(lista)) End Sub Private Sub LnkExportar_Click(sender As Object, e As EventArgs) Handles LnkExportar.Click Dim SubProyecto As String = "" If DdlSubProyecto.SelectedValue.ToEntero > 0 Then SubProyecto = DdlSubProyecto.SelectedItem.Text End If GvAnual.ExportToExcelGembox("AnexoCatálogoAnual", UsuarioActual, $"01/01/{DdlEjercicio.SelectedValue}", $"31/12/{DdlEjercicio2.SelectedValue}", "Anexo del Catálogo - Anual", SubProyecto, DdlDivisor.SelectedValue.ToEntero, DatoTituloExtra:=$"Periodo {DdlPeriodo.SelectedItem.Text}") End Sub Public Overrides Sub VerifyRenderingInServerForm(ByVal control As Control) End Sub #End Region Protected Sub GvAnual_DataBound(sender As Object, e As EventArgs) 'If DtHeadersCount > 0 Then ' '96 32 ' Dim NColumns As Integer = GvAnual.Columns.Count ' Dim row As New GridViewRow(0, 0, DataControlRowType.Header, DataControlRowState.Normal) ' Dim cell1 As New TableHeaderCell() ' cell1.Text = "" ' cell1.ColumnSpan = 1 ' row.Controls.Add(cell1) ' Dim cell2 As New TableHeaderCell() ' cell2.Text = "" ' cell2.ColumnSpan = 1 ' row.Controls.Add(cell2) ' Dim cell3 As New TableHeaderCell() ' cell3.Text = "" ' cell3.ColumnSpan = 1 ' row.Controls.Add(cell3) ' Dim cell4 As New TableHeaderCell() ' cell4.Text = "" ' cell4.ColumnSpan = 1 ' row.Controls.Add(cell4) ' For x = 0 To DtHeadersCount ' Dim cell As New TableHeaderCell() ' cell.Text = "" ' cell.ColumnSpan = 1 ' row.Controls.Add(cell) ' Dim cellColspan2 = New TableHeaderCell() ' cellColspan2.ColumnSpan = 2 ' cellColspan2.Text = "Variación" ' row.Controls.Add(cellColspan2) ' x = x + 1 ' Next ' GvAnual.HeaderRow.Parent.Controls.AddAt(0, row) 'End If End Sub End Class