Option Explicit On Option Strict On Imports Extensiones Imports Microsoft.Reporting.WebForms Imports System.Data Partial Class ACumuladores_RepIndicadorDiario Inherits ClsPaginas #Region " PROPIEDADES " Private Property DtDatos As DataTable Get DtDatos = DirectCast(ViewState("DtDatos"), DataTable) End Get Set(ByVal value As DataTable) ViewState("DtDatos") = value End Set End Property Private Property NumeroRemesa As String Get NumeroRemesa = ViewState("NumeroRemesa").ToString End Get Set(value As String) ViewState("NumeroRemesa") = value End Set End Property Private Property TCEspecifico As Double Get If ViewState("TCEspecifico") Is Nothing Then Return -1 Else Return DirectCast(ViewState("TCEspecifico"), Double) End If End Get Set(value As Double) ViewState("TCEspecifico") = value End Set End Property Private Property Agrupador As String Get Return ViewState("Agrupador").ToString End Get Set(value As String) ViewState("Agrupador") = value End Set End Property Private Property CveMoneda As Integer Get CveMoneda = ViewState("CveMoneda").ToString.ToEntero End Get Set(value As Integer) ViewState("CveMoneda") = 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 txtFechaI.Text = Now.FirstDayOfMonth().ToString("dd/MM/yyyy") txtFechaF.Text = Now.ToString("dd/MM/yyyy") CargaCombos() End If End Sub #Region "CARGAS" Private Sub CargaCombos() CargarCentrosDeCosto(Nothing, DdlSubProyecto, Nothing, LblSubProyecto) DdlSubProyecto.SelectedValueExist("-1") End Sub Private Sub CargaDatos() Dim ObjAcum As New ClsAcumuladores() Dim FechaI, FechaF As Date FechaI = txtFechaI.Text.ToDate FechaF = txtFechaF.Text.ToDate If RblTipoCambio.SelectedValue.ToEntero = 3 And TxtEspecifico.Text <> "" Then TCEspecifico = TxtEspecifico.Text.ToDouble Else TCEspecifico = -1 End If If ObjAcum.GetRepIndicadorDiario(FechaI, FechaF, DdlSubProyecto.SelectedValue.ToEntero, usuarioactual.cveusuario, UsuarioActual.CveEmpresa) Then GvDatos.DataSource = ObjAcum.DtResultados DtDatos = ObjAcum.DtResultados Else GvDatos.DataSource = Nothing End If ObjAcum.Dispose() GvDatos.DataBind() End Sub #End Region #Region "SELECTED INDEX CHANGE" Private Sub RblTipoCambio_SelectedIndexChanged(sender As Object, e As EventArgs) Handles RblTipoCambio.SelectedIndexChanged If RblTipoCambio.SelectedValue.ToEntero = 3 Then Dim TipoCambio As Double LiEspecifico.Visible = True TipoCambio = GlobalTipoCambio(Now) TxtEspecifico.Text = TipoCambio.ToString Else LiEspecifico.Visible = False End If UpBodyTipoCambio.Update() End Sub #End Region #Region "CONSULTAR" Protected Sub BtnConsultar_Click(sender As Object, e As System.EventArgs) Handles BtnConsultar.Click CargaDatos() UPDatos.Update() End Sub #End Region #Region "GRIDVIEW" Protected Sub GvDatos_RowDataBound(sender As Object, e As System.Web.UI.WebControls.GridViewRowEventArgs) Handles GvDatos.RowDataBound If e.Row.RowType = DataControlRowType.DataRow Then If e.Row.DBCampo("Partida").Contiene("1", "2", "3", "4", "5", "6", "7", "8", "9", "10", "11", "12", "13", "14", "15", "16") Then e.Row.FCHyperLink("HplImporteAldia").NavigateUrl = String.Format("RepIndicadorDiarioDetalle.aspx?Partida={0}&FI={1}&FF={2}&CveSubProyecto={3}", e.Row.DBCampo("Partida"), txtFechaF.Text, txtFechaF.Text, DdlSubProyecto.SelectedValue) End If If e.Row.DataKey("Ordernador2").ToEntero = 100 Or e.Row.DataKey("Seccion").ToEntero = 3 And (e.Row.DataKey("TipoCategoria").ToEntero = 6 Or e.Row.DataKey("TipoCategoria").ToEntero = 7) Then e.Row.Font.Bold = True End If End If End Sub #End Region #Region " IMPRIMIR " Protected Sub LnkExportar_Click(sender As Object, e As EventArgs) Handles LnkExportar.Click 'GvDatos.ExportToExcel("ReporteComprasClasificacion" & Now.ToShortDateString) GenerarPDF("EXCEL") End Sub Protected Sub LnkPdf_Click(sender As Object, e As EventArgs) GenerarPDF("PDF") End Sub Private Sub GenerarPDF(Opcion As String) Dim FechaI = If(txtFechaI.Text = "" Or txtFechaI.Text = "__/__/____", "-1", txtFechaI.Text) Dim FechaF = If(txtFechaF.Text = "" Or txtFechaF.Text = "__/__/____", "-1", txtFechaF.Text) Dim FechaIn As String = $" Fecha Inicio: {txtFechaI.Text}" Dim FechaFn As String = $" Fecha Fin: {txtFechaF.Text}" If txtFechaI.Text = "" Then FechaIn = "" If txtFechaF.Text = "" Then FechaFn = "" Dim SubProyecto = If(DdlSubProyecto.SelectedItem.Text = "", "", $" SubProyecto: {DdlSubProyecto.SelectedItem.Text}") Dim FechaIF, FechaFF As String FechaIF = If(IsDate(txtFechaI.Text.Trim()), txtFechaI.Text.Trim(), "-1") FechaFF = If(IsDate(txtFechaF.Text.Trim()), txtFechaF.Text.Trim(), "-1") If DtDatos IsNot Nothing AndAlso DtDatos.Rows.Count > 0 Then Dim Imagen As New System.IO.FileInfo($"{UsuarioActual.Empresa.Ruta}/Logo.png") Dim params As New List(Of ReportParameter) params.Add(New ReportParameter("NombreEmpresa", UsuarioActual.Empresa.Empresa)) params.Add(New ReportParameter("FechaInicio", FechaI)) params.Add(New ReportParameter("FechaFin", FechaF)) params.Add(New ReportParameter("UsuarioImprimio", UsuarioActual.Nombre)) params.Add(New ReportParameter("FechaImpresion", Now.ToString)) params.Add(New ReportParameter("AgrupadoPor", $"Filtros Por: {FechaIn} {FechaFn} {SubProyecto} ")) params.Add(New ReportParameter("LogoPath", If(Imagen.Exists, $"file://{Imagen.FullName}", ""))) ImprimirPDF("Empresas/Grales/Formatos/RepIndicadorDiario.rdlc", DtDatos, params, $"RepIndicadorDiario_{Now.ToString("yyyyMMddhhmmss")}", Opcion) Else Alert("No hay datos consultados", TipoMensaje.MsgAdvertencia) End If End Sub #End Region #Region "GRAFICA" Protected Sub LnkVerGrafica_Click(sender As Object, e As EventArgs) If Not DtDatos IsNot Nothing AndAlso DtDatos.Rows.Count > 0 Then Alert("No hay datos disponibles", TipoMensaje.MsgAdvertencia) Exit Sub End If LblTituloGrafica.Text = $"Agrupado por: {Agrupador}" RegistraScript("$('#DivModalGrafica').modal('show')") CambioGrafica() End Sub Private Sub CambioGrafica() Dim Dt As New DataTable() Dt.Columns.Add("Texto") Dt.Columns.Add("Valor") Dt.Columns.Add("Color") Dt.Columns.Add("Moneda") Dim RowColorIndex As Integer = 0 For Each Dr As DataRow In DtDatos.Rows If Not Dr("CveCompra").ToString.ToEntero > 0 Then Dim Row As DataRow = Nothing Row = Dt.NewRow() Row("Texto") = $"{Dr("GPO").ToString} {GlobalDTMonedas().FiltraParametros($"CveMoneda = {CveMoneda}").Rows(0)("Abreviatura").ToString}" Select Case DdlVer.SelectedValue.ToEntero Case 1 Row("Valor") = Dr("Total").ToString.FormatoNumero Case 2 Row("Valor") = Dr("SubTotal").ToString.FormatoNumero Case 3 Row("Valor") = Dr("IVA").ToString.FormatoNumero End Select Row("Color") = Colors(RowColorIndex) Row("Moneda") = GlobalDTMonedas().FiltraParametros($"CveMoneda = {CveMoneda}").Rows(0)("Moneda").ToString Dt.Rows.Add(Row) RowColorIndex += 1 If RowColorIndex >= Colors.Length Then RowColorIndex = 0 End If Next Dim query = From s In Dt.AsEnumerable() Select New With {.Texto = s("Texto").ToString(), .Valor = s("Valor").ToString().ToDouble(), .Color = s("Color").ToString(), .Moneda = s("Moneda").ToString()} Dim json As String = Newtonsoft.Json.JsonConvert.SerializeObject(query) Select Case DdlGrafica.SelectedValue.ToEntero Case 1 RegistraScript($"CargaGraficaBarras({json})", "22") Case 2 RegistraScript($"CargaGraficaPastel({json})", "22") End Select UPModalProd.Update() End Sub Protected Sub DdlGrafica_SelectedIndexChanged(sender As Object, e As EventArgs) CambioGrafica() End Sub Protected Sub DdlVer_SelectedIndexChanged(sender As Object, e As EventArgs) CambioGrafica() End Sub #End Region End Class