Files
SIG/Finanzas/RepRazonesFinancieras2.aspx.vb

641 lines
19 KiB
VB.net

Option Explicit On
Option Strict On
Imports System.Data
Imports System.Drawing
Imports System.IO
Imports System.Windows.Forms
Imports Extensiones
Imports GemBox.Spreadsheet
Imports Microsoft.Reporting.WebForms
Partial Class Finanzas_RepRazonesFinancieras2
Inherits ClsPaginas
Property DTRatios As DataTable
Get
If ViewState("DTRatios") Is Nothing Then
ViewState("DTRatios") = New DataTable
End If
Return DirectCast(ViewState("DTRatios"), DataTable)
End Get
Set(value As DataTable)
ViewState("DTRatios") = value
End Set
End Property
Property DTEjercicios As DataTable
Get
If ViewState("DTEjercicios") Is Nothing Then
ViewState("DTEjercicios") = New DataTable
End If
Return DirectCast(ViewState("DTEjercicios"), DataTable)
End Get
Set(value As DataTable)
ViewState("DTEjercicios") = value
End Set
End Property
Protected Sub Page_Load(sender As Object, e As EventArgs) Handles Me.Load
If Not Page.IsPostBack Then
Tab.ActiveTabIndex = 0
CargaDTEjercicios()
DdlVista_SelectedIndexChanged(Nothing, Nothing)
CargarCentrosDeCosto(Nothing, DdlSubproyecto, Nothing, LblSubProyecto)
DdlEjercicio.SelectedValueExist(UsuarioActual.Empresa.EjercicioActual)
ValidaEjercicios()
End If
End Sub
Protected Sub DdlEjercicio_SelectedIndexChanged(sender As Object, e As EventArgs)
ValidaEjercicios()
End Sub
Protected Sub DdlEjercicio2_SelectedIndexChanged(sender As Object, e As EventArgs)
ValidaEjercicios()
End Sub
Private Sub ValidaEjercicios()
Dim EInicio As Integer = DdlEjercicio.SelectedValue.ToEntero
If EInicio > DdlEjercicio2.SelectedValue.ToEntero Then
If DdlEjercicio2.Items.Count > 0 Then
DdlEjercicio2.SelectedIndex = DdlEjercicio2.Items.Count - 1
End If
Dim Fejerciosio As Integer = DdlEjercicio2.SelectedValue.ToEntero
If Not EInicio + 1 > Fejerciosio Then
DdlEjercicio2.SelectedValueExist(EInicio + 1)
End If
End If
UpFiltros.Update()
End Sub
Protected Sub BtnConsultar_Click(sender As Object, e As EventArgs)
LnkExportar.Visible = False
If Tab.ActiveTabIndex = 0 Then
CargaDatosBalanceGeneral()
End If
If Tab.ActiveTabIndex = 1 Then
CargaDatosEstadoResultados()
End If
If Tab.ActiveTabIndex = 2 Then
CargaDatosRatios()
End If
End Sub
#Region "ESTADO BALANCE GENERAL"
Private Sub CargaDatosBalanceGeneral()
LnkExportar.Visible = False
GvBalanceGeneralOcultarColumnas(GvBalanceGeneral, 1)
Dim CveSubProyecto = DdlSubproyecto.SelectedValue.ToEntero
Dim objFinanzas As New ClsFinanzas
Dim dtTemp As New DataTable
Dim FechasConsultar As String = GetFechasConsultar()
' Alert(FechasConsultar)
If objFinanzas.GetRazonesFinancierasBalanceGeneralRep(-1, CveSubProyecto, UsuarioActual.CveEmpresa, UsuarioActual.CveUsuario, 1, DdlPeriodo.SelectedValue.ToEntero, FechasConsultar, DdlVista.SelectedValue.ToEntero) Then
dtTemp = objFinanzas.DtResultados
GvBalanceGeneralMostrarColumnas(dtTemp, GvBalanceGeneral)
GvBalanceGeneral.DataSource = dtTemp
If dtTemp.Rows.Count > 0 Then
' LnkExportar.Visible = True
End If
Else
GvBalanceGeneral.DataSource = Nothing
End If
objFinanzas.Dispose()
GvBalanceGeneral.DataBind()
UpBalanceGeneral.Update()
End Sub
Private Sub GvBalanceGeneralOcultarColumnas(ByRef Gv As GridView, Optional index As Integer = 2)
For index = 2 To Gv.Columns.Count - 1
CType(Gv.Columns(index), BoundField).DataField = Nothing
Gv.Columns(index).Visible = False
Next
UpBalanceGeneral.Update()
End Sub
Private Sub GvBalanceGeneralMostrarColumnas(dt As DataTable, ByRef Gv As GridView)
Dim index = 1
For index = 1 To dt.Columns.Count - 5
CType(Gv.Columns(index + 4), BoundField).DataField = dt.Columns(index + 4).ColumnName
Gv.Columns(index + 4).Visible = True
CType(Gv.Columns(index + 4), BoundField).HeaderText = dt.Columns(index + 4).ColumnName
Next
End Sub
Protected Sub GvBalanceGeneral_RowDataBound(sender As Object, e As GridViewRowEventArgs)
If e.Row.RowType = DataControlRowType.DataRow Then
If e.Row.DataKey("Tipo").ToEntero = 1 Then
e.Row.Font.Bold = True
e.Row.Cells(0).Text = ""
End If
If e.Row.DataKey("Tipo").ToEntero = 3 Then
e.Row.FCLabel("LblNombre").Text = $" {e.Row.FCLabel("LblNombre").Text}"
e.Row.Attributes.Add("style", "border-top: 1px solid #000;")
e.Row.Cells(0).Text = ""
End If
If e.Row.DataKey("Tipo").ToEntero = 4 Then
e.Row.Attributes.Add("style", "border-top: solid;border-bottom: solid")
e.Row.Cells(0).Text = ""
End If
End If
End Sub
#End Region
#Region "ESTADO RESULTADOS"
Private Sub CargaDatosEstadoResultados()
LnkExportar.Visible = False
GVEstadoRsultadosOcultarColumnas(GVEstadoRsultados, 1)
Dim CveSubProyecto = DdlSubproyecto.SelectedValue.ToEntero
Dim objFinanzas As New ClsFinanzas
Dim dtTemp As New DataTable
Dim FechasConsultar As String = GetFechasConsultar()
If objFinanzas.GetRazonesFinancierasEstadoResultadosRep(-1, CveSubProyecto, UsuarioActual.CveEmpresa, UsuarioActual.CveUsuario, 1, DdlPeriodo.SelectedValue.ToEntero, FechasConsultar, DdlVista.SelectedValue.ToEntero) Then
dtTemp = objFinanzas.DtResultados
GVEstadoRsultadosMostrarColumnas(dtTemp, GVEstadoRsultados)
GVEstadoRsultados.DataSource = dtTemp
If dtTemp.Rows.Count > 0 Then
' LnkExportar.Visible = True
End If
Else
GVEstadoRsultados.DataSource = Nothing
End If
objFinanzas.Dispose()
GVEstadoRsultados.DataBind()
UpEstadoResultados.Update()
End Sub
Private Sub GVEstadoRsultadosOcultarColumnas(ByRef Gv As GridView, Optional index As Integer = 2)
For index = 2 To Gv.Columns.Count - 1
CType(Gv.Columns(index), BoundField).DataField = Nothing
Gv.Columns(index).Visible = False
Next
UpEstadoResultados.Update()
End Sub
Private Sub GVEstadoRsultadosMostrarColumnas(dt As DataTable, ByRef Gv As GridView)
Dim index = 1
For index = 1 To dt.Columns.Count - 5
CType(Gv.Columns(index + 4), BoundField).DataField = dt.Columns(index + 4).ColumnName
Gv.Columns(index + 4).Visible = True
Dim tmpDate As Date
CType(Gv.Columns(index + 4), BoundField).HeaderText = dt.Columns(index + 4).ColumnName
'If (Date.TryParse(dt.Columns(index + 4).ColumnName, tmpDate)) Then
' CType(Gv.Columns(index + 4), BoundField).HeaderText = tmpDate.ToString("dd-MMM").Replace(".", "")
'Else
' CType(Gv.Columns(index + 4), BoundField).HeaderText = dt.Columns(index + 4).ColumnName
'End If
Next
End Sub
Protected Sub GVEstadoRsultados_RowDataBound(sender As Object, e As GridViewRowEventArgs)
If e.Row.RowType = DataControlRowType.DataRow Then
If e.Row.DataKey("Tipo").ToEntero = 1 Then
e.Row.Font.Bold = True
e.Row.Cells(0).Text = ""
End If
If e.Row.DataKey("Tipo").ToEntero = 3 Then
e.Row.FCLabel("LblNombre").Text = $" {e.Row.FCLabel("LblNombre").Text}"
e.Row.Cells(0).Text = ""
End If
If e.Row.DataKey("Tipo").ToEntero = 4 Then
e.Row.Attributes.Add("style", "border-top: solid;border-bottom: solid")
e.Row.Cells(0).Text = ""
End If
End If
End Sub
#End Region
#Region "RATIOS"
Private Sub CargaDatosRatios()
DTRatios = New DataTable
LnkExportar.Visible = False
GVRatiosOcultarColumnas(GVRatios, 1)
Dim CveSubProyecto = DdlSubproyecto.SelectedValue.ToEntero
Dim FechasConsultar As String = GetFechasConsultar()
Dim objFinanzas As New ClsFinanzas
If objFinanzas.GetRazonesFinancierasRatiosRep(-1, CveSubProyecto, UsuarioActual.CveEmpresa, UsuarioActual.CveUsuario, 1, DdlPeriodo.SelectedValue.ToEntero, FechasConsultar, DdlVista.SelectedValue.ToEntero) Then
DTRatios = objFinanzas.DtResultados
GVRatiosMostrarColumnas(DTRatios, GVRatios)
GVRatios.DataSource = DTRatios
If DTRatios.Rows.Count > 0 Then
' LnkExportar.Visible = True
End If
Else
GVRatios.DataSource = Nothing
End If
objFinanzas.Dispose()
GVRatios.DataBind()
UpBalanceGeneral.Update()
End Sub
Private Sub GVRatiosOcultarColumnas(ByRef Gv As GridView, Optional index As Integer = 2)
For index = 1 To Gv.Columns.Count - 1
CType(Gv.Columns(index), BoundField).DataField = Nothing
Gv.Columns(index).Visible = False
Next
UpEstadoResultados.Update()
End Sub
Private Sub GVRatiosMostrarColumnas(dt As DataTable, ByRef Gv As GridView)
Dim index = 4
For index = 4 To dt.Columns.Count - 2
CType(Gv.Columns(index + 1), BoundField).DataField = dt.Columns(index + 1).ColumnName
Gv.Columns(index + 1).Visible = True
CType(Gv.Columns(index + 1), BoundField).HeaderText = dt.Columns(index + 1).ColumnName
Next
End Sub
Protected Sub GVRatios_RowDataBound(sender As Object, e As GridViewRowEventArgs)
If e.Row.RowType = DataControlRowType.DataRow Then
For x = 1 To DTRatios.Columns.Count
If e.Row.DataKey("Ratio") = "INCREMENTO DE VENTAS" Then
Dim asddas = ""
End If
If e.Row.Cells(x).Text.ToDecimal < 0 Then
e.Row.Cells(x).ForeColor = Drawing.Color.Red
End If
Next
If e.Row.DataKey("Tipo").ToEntero = 1 Then
e.Row.Font.Bold = True
End If
If e.Row.DataKey("Tipo").ToEntero = 3 Then
e.Row.FCLabel("LblNombre").Text = $"&emsp;{e.Row.FCLabel("LblNombre").Text}"
End If
If e.Row.DataKey("Tipo").ToEntero = 4 Then
e.Row.Attributes.Add("style", "border-top: solid;border-bottom: solid")
End If
If e.Row.DataKey("Tipo").ToEntero <> 1 AndAlso DTRatios.Columns.Count > 0 Then
Dim EsPorcentaje = If(e.Row.DataKey("EsPorcentaje").ToEntero = 1, True, False)
For x = 1 To DTRatios.Columns.Count - 2
If EsPorcentaje Then
e.Row.Cells(x).Text = $"{(e.Row.Cells(x).Text.ToDecimal * 100.0).ToString("###,####,###.00")}%"
Else
e.Row.Cells(x).Text = $"{e.Row.Cells(x).Text.ToDecimal.ToString("###,###,###.00")}"
End If
Next
End If
If e.Row.DataKey("Formula").Trim().Length > 0 Then
'data-html="true" data-toggle="tooltip" data-placement="left" title="Agregar<br/>Familiares"
e.Row.Attributes.Add("data-html", "true")
e.Row.Attributes.Add("data-toggle", "tooltip")
e.Row.Attributes.Add("data-placement", "top")
e.Row.Attributes.Add("title", $"{e.Row.DataKey("Formula").Trim()}")
End If
End If
End Sub
#End Region
#Region "DESCARGA EXCEL"
Protected Sub LnkExportar_Click(sender As Object, e As EventArgs)
Dim SubProyecto As String = ""
If DdlSubproyecto.SelectedValue.ToEntero > 0 Then
SubProyecto = DdlSubproyecto.SelectedItem.Text
End If
Dim SbFiltros As New StringBuilder()
SbFiltros.Append($"Año Inicio: {DdlEjercicio.SelectedItem.Text} Año Fin: {DdlEjercicio2.SelectedItem.Text} ")
SbFiltros.Append($"SubProyecto: {SubProyecto}")
Dim Titulo As String = ""
Dim NombreReporte As String = ""
If Tab.ActiveTabIndex = 0 Then
Titulo = "Balance General"
NombreReporte = "BalanceGenral"
End If
If Tab.ActiveTabIndex = 1 Then
Titulo = "Estado de Resultados"
NombreReporte = "Estado de Resultados"
End If
If Tab.ActiveTabIndex = 2 Then
Titulo = "Ratios"
NombreReporte = "Ratios"
End If
GVRatios.ExportToExcelGembox(NombreReporte, UsuarioActual, $"Reporte {Titulo}", "", DatosFiltros:=SbFiltros.ToString())
End Sub
#End Region
Protected Sub DdlVista_SelectedIndexChanged(sender As Object, e As EventArgs)
LblPeriodo.Visible = False
DivPeriodo.Visible = False
DdlPeriodo.SelectedValueExist(12)
DdlEjercicio.SelectedValue = Nothing
DdlEjercicio2.SelectedValue = Nothing
DdlEjercicio.Items.Clear()
DdlEjercicio2.Items.Clear()
If DdlVista.SelectedValue.ToEntero = 1 Then
LblPeriodo.Visible = True
DivPeriodo.Visible = True
AddHandler DdlEjercicio.SelectedIndexChanged, AddressOf DdlEjercicio_SelectedIndexChanged
AddHandler DdlEjercicio2.SelectedIndexChanged, AddressOf DdlEjercicio2_SelectedIndexChanged
CargaEjercicios()
Else
RemoveHandler CType(DdlEjercicio, DropDownList).SelectedIndexChanged, AddressOf DdlEjercicio_SelectedIndexChanged
RemoveHandler CType(DdlEjercicio2, DropDownList).SelectedIndexChanged, AddressOf DdlEjercicio2_SelectedIndexChanged
CargaMeses()
End If
UpFiltros.Update()
End Sub
Private Sub CargaDTEjercicios()
Dim ClsConta As New ClsContabilidad
If ClsConta.GetEjercicios(UsuarioActual.CveEmpresa) Then
DTEjercicios = ClsConta.DtResultados
End If
ClsConta.Dispose()
End Sub
Private Sub CargaEjercicios()
Dim Count As Integer = 0
For Each dRow As DataRow In DTEjercicios.Rows
DdlEjercicio.Items.Add(New ListItem($"{dRow("Ejercicio").ToString}", $"{dRow("Ejercicio").ToString}"))
DdlEjercicio2.Items.Add(New ListItem($"{dRow("Ejercicio").ToString}", $"{dRow("Ejercicio").ToString}"))
Count = Count + 1
Next
If Count > 0 Then
DdlEjercicio.SelectedIndex = 0
DdlEjercicio2.SelectedIndex = 0
End If
End Sub
Private Sub CargaMeses()
Dim Count As Integer = 0
For Each dRow As DataRow In DTEjercicios.Rows
DdlEjercicio.Items.Add(New ListItem($"Enero {dRow("Ejercicio").ToString}", $"{dRow("Ejercicio").ToString}-01"))
DdlEjercicio.Items.Add(New ListItem($"Febrero {dRow("Ejercicio").ToString}", $"{dRow("Ejercicio").ToString}-02"))
DdlEjercicio.Items.Add(New ListItem($"Marzo {dRow("Ejercicio").ToString}", $"{dRow("Ejercicio").ToString}-03"))
DdlEjercicio.Items.Add(New ListItem($"Abril {dRow("Ejercicio").ToString}", $"{dRow("Ejercicio").ToString}-04"))
DdlEjercicio.Items.Add(New ListItem($"Mayo {dRow("Ejercicio").ToString}", $"{dRow("Ejercicio").ToString}-05"))
DdlEjercicio.Items.Add(New ListItem($"Junio {dRow("Ejercicio").ToString}", $"{dRow("Ejercicio").ToString}-06"))
DdlEjercicio.Items.Add(New ListItem($"Julio {dRow("Ejercicio").ToString}", $"{dRow("Ejercicio").ToString}-07"))
DdlEjercicio.Items.Add(New ListItem($"Agosto {dRow("Ejercicio").ToString}", $"{dRow("Ejercicio").ToString}-08"))
DdlEjercicio.Items.Add(New ListItem($"Septiembre {dRow("Ejercicio").ToString}", $"{dRow("Ejercicio").ToString}-09"))
DdlEjercicio.Items.Add(New ListItem($"Octubre {dRow("Ejercicio").ToString}", $"{dRow("Ejercicio").ToString}-10"))
DdlEjercicio.Items.Add(New ListItem($"Noviembre {dRow("Ejercicio").ToString}", $"{dRow("Ejercicio").ToString}-11"))
DdlEjercicio.Items.Add(New ListItem($"Diciembre {dRow("Ejercicio").ToString}", $"{dRow("Ejercicio").ToString}-12"))
DdlEjercicio2.Items.Add(New ListItem($"Enero {dRow("Ejercicio").ToString}", $"{dRow("Ejercicio").ToString}-01"))
DdlEjercicio2.Items.Add(New ListItem($"Febrero {dRow("Ejercicio").ToString}", $"{dRow("Ejercicio").ToString}-02"))
DdlEjercicio2.Items.Add(New ListItem($"Marzo {dRow("Ejercicio").ToString}", $"{dRow("Ejercicio").ToString}-03"))
DdlEjercicio2.Items.Add(New ListItem($"Abril {dRow("Ejercicio").ToString}", $"{dRow("Ejercicio").ToString}-04"))
DdlEjercicio2.Items.Add(New ListItem($"Mayo {dRow("Ejercicio").ToString}", $"{dRow("Ejercicio").ToString}-05"))
DdlEjercicio2.Items.Add(New ListItem($"Junio {dRow("Ejercicio").ToString}", $"{dRow("Ejercicio").ToString}-06"))
DdlEjercicio2.Items.Add(New ListItem($"Julio {dRow("Ejercicio").ToString}", $"{dRow("Ejercicio").ToString}-07"))
DdlEjercicio2.Items.Add(New ListItem($"Agosto {dRow("Ejercicio").ToString}", $"{dRow("Ejercicio").ToString}-08"))
DdlEjercicio2.Items.Add(New ListItem($"Septiembre {dRow("Ejercicio").ToString}", $"{dRow("Ejercicio").ToString}-09"))
DdlEjercicio2.Items.Add(New ListItem($"Octubre {dRow("Ejercicio").ToString}", $"{dRow("Ejercicio").ToString}-10"))
DdlEjercicio2.Items.Add(New ListItem($"Noviembre {dRow("Ejercicio").ToString}", $"{dRow("Ejercicio").ToString}-11"))
DdlEjercicio2.Items.Add(New ListItem($"Diciembre {dRow("Ejercicio").ToString}", $"{dRow("Ejercicio").ToString}-12"))
Count = Count + 1
Next
If Count > 0 Then
DdlEjercicio.SelectedIndex = 0
DdlEjercicio2.SelectedIndex = 0
End If
End Sub
Private Function GetFechasConsultar() As String
Dim ListaFechas As New List(Of String)
If DdlVista.SelectedValue.ToEntero = 1 Then 'POR EJERCICIO
If DdlEjercicio2.SelectedValue.ToEntero >= DdlEjercicio.SelectedValue.ToEntero Then
Dim x As Integer = DdlEjercicio.SelectedValue.ToEntero
For x = DdlEjercicio.SelectedValue.ToEntero To DdlEjercicio2.SelectedValue.ToEntero
ListaFechas.Add($"{x}-12-31")
Next x
End If
Else ' POR MESES
ListaFechas.Add($"{DdlEjercicio.SelectedValue}-01".ToDate.LastDayOfMonth.ToString("yyyy-MM-dd"))
ListaFechas.Add($"{DdlEjercicio2.SelectedValue}-01".ToDate.LastDayOfMonth.ToString("yyyy-MM-dd"))
End If
Return String.Join(",", ListaFechas)
End Function
End Class