Option Explicit On Option Strict On Imports System.Data Imports Extensiones Partial Class Contabilidad2_RepAnexoCatalogoCC 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 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 listaCampos As List(Of String()) Get Return DirectCast(ViewState("listaCampos"), List(Of String())) End Get Set(value As List(Of String())) ViewState("listaCampos") = 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) listaCampos = 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, SubProyectoParametro, DivisorParametro As Integer 'CveCuenta = IfNull(Request("C"), "-1").ToString.ToEntero 'EjercicioParametro = IfNull(Request("E"), "-1").ToString.ToEntero 'SubProyectoParametro = IfNull(Request("S"), "-1").ToString.ToEntero 'DivisorParametro = IfNull(Request("D"), "-1").ToString.ToEntero Dim EjercicioParametro, SubProyectoParametro, DivisorParametro, Periodo As Integer CveCuenta = IfNull(Request("CveCuenta"), "-1").ToString.ToEntero EjercicioParametro = IfNull(Request("Ejercicio"), "-1").ToString.ToEntero SubProyectoParametro = IfNull(Request("CveSubProyecto"), "-1").ToString.ToEntero DivisorParametro = IfNull(Request("Divisor"), "-1").ToString.ToEntero Periodo = IfNull(Request("Periodo"), "-1").ToString.ToEntero InicializaValores() CargarCentrosDeCosto(Nothing, DdlSubProyecto, Nothing, LblSubProyecto) DdlEjercicio.SelectedValueExist(EjercicioParametro.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 Else DdlEjercicio.DataSource = Nothing End If Conta.Dispose() DdlEjercicio.DataBind() DdlEjercicio.SelectedValueExist(Now.Year.ToString) '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 If Conta.GetAnexoCatalagoCC(CveCuenta, DdlEjercicio.SelectedValue.ToEntero, DdlSubProyecto.SelectedValue.ToEntero, UsuarioActual.CveEmpresa, DdlDivisor.SelectedValue.ToEntero, DdlPeriodo.SelectedValue.ToEntero, UsuarioActual.CveUsuario) Then DTHeaders = Conta.DSResultados.Tables(0) DTDatos = Conta.DSResultados.Tables(1) GvCC.DataSource = Conta.DSResultados.Tables(1) Dim Index = 4 For Index = 4 To GvCC.Columns.Count - 1 GvCC.Columns(Index).Visible = False Next Index listaCampos.Clear() Index = 4 For Each Dr As DataRow In DTHeaders.Rows GvCC.Columns(Index).Visible = True CType(GvCC.Columns(Index), BoundField).DataField = String.Format("SubProyecto{0}", Dr("SubProyecto")) GvCC.Columns(Index).HeaderText = Dr("SubProyecto").ToString() listaCampos.Add(New String() {String.Format("SubProyecto{0}", Dr("SubProyecto")), Dr("SubProyecto").ToString()}) 'GvCC.Columns(Index + 1).Visible = True 'CType(GvCC.Columns(Index + 1), BoundField).DataField = String.Format("SubProyecto{0}Porcentaje", Dr("SubProyecto")) 'GvCC.Columns(Index + 1).HeaderText = "%" 'Index += 2 Index += 1 Next GvCC.DataBind() UpCC.Update() Else GvCC.DataSource = Nothing End If If GvCC.Rows.Count > 0 Then LnkExportar.Visible = True UpAcciones.Update() End If 'RegistraScript($"LimpiaCeros({DdlDivisor.SelectedValue});") Conta.Dispose() End Sub #End Region #Region " GV ROW DATABOUND " Protected Sub GvCC_RowDataBound(sender As Object, e As GridViewRowEventArgs) Handles GvCC.RowDataBound If e.Row.RowType = DataControlRowType.DataRow Then If e.Row.RowIndex = 0 Then e.Row.Style.Add("font-weight", "bold") End If setgraficaCC(e) 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 Index As Integer = 2 For Each DRow As DataRow In DTHeaders.Rows Dim Importe As Decimal = e.Row.DBCampo($"SubProyecto{DRow("SubProyecto")}").ToDecimal 'Dim Anio As Integer = DRow("SubProyecto").ToString.ToEntero If e.Row.CssClass = "Totales" And Index = 2 Then e.Row.Cells(Index).ForeColor = Drawing.ColorTranslator.FromHtml("#337ab7") End If If e.Row.Cells(Index).Text.Replace("%", "").ToDecimal = 0 Then e.Row.Cells(Index).Text = "-" ElseIf e.Row.Cells(Index).Text.Replace("%", "").ToDecimal < 0 Then e.Row.Cells(Index).ForeColor = Drawing.Color.Red End If Index += 1 Next Dim CveCunetaRow As Integer = e.Row.DataKey("CveCuenta").ToEntero Dim inicial As Boolean = True Index = 4 For Each DRow As DataRow In DTHeaders.Rows Dim Importe As Decimal = e.Row.DBCampo($"SubProyecto{DRow("SubProyecto")}").ToDecimal 'Dim Anio As Integer = DRow("SubProyecto").ToString.ToEntero If e.Row.Cells(Index).Text.Replace("%", "").ToDecimal = 0 Then e.Row.Cells(Index).Text = "-" ElseIf e.Row.Cells(Index).Text.Replace("%", "").ToDecimal < 0 Then e.Row.Cells(Index).ForeColor = Drawing.Color.Red End If 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 Index += 1 Next 'Index = 4 'For Each DRow As DataRow In DTHeaders.Rows ' Dim Importe As Decimal = e.Row.DBCampo($"SubProyecto{DRow("SubProyecto")}").ToDecimal ' 'Dim Anio As Integer = DRow("SubProyecto").ToString.ToEntero ' If Importe > 0 Then ' e.Row.Cells(Index).Text = $"{ If(DdlDivisor.SelectedValue.ToEntero > 1, Importe.ToString("###,###,##0"), Importe.ToString("###,###,###.00")) }" ' Else ' e.Row.Cells(Index).Text = "-" ' 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 ' Index += 1 '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 listaCampos 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 #End Region 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 GvCC.ExportToExcelGembox("AnexoCatálogoMensual", UsuarioActual, $"01/01/{DdlEjercicio.SelectedValue}", $"31/12/{DdlEjercicio.SelectedValue}", $"Estado de Resultados Horizontal por {LblSubProyecto.Text}", SubProyecto, DdlDivisor.SelectedValue.ToEntero, DatoTituloExtra:=$"Periodo {DdlPeriodo.SelectedItem.Text}") End Sub Public Overrides Sub VerifyRenderingInServerForm(ByVal control As Control) End Sub End Class