From a9909397c8c8a00a3c01a072adba8c23be7887f1 Mon Sep 17 00:00:00 2001 From: Jonathan Alexis Perez Morales Date: Fri, 30 Apr 2021 10:42:36 -0700 Subject: [PATCH] GPS. Mejores reporte de punto de interes --- GPS/PuntosDeInteres.aspx.vb | 26 +- GPS/RepPuntosDeInteres.aspx | 520 +++++++++++++++++---------------- GPS/RepPuntosDeInteres.aspx.vb | 284 ++++++++++++++++-- 3 files changed, 545 insertions(+), 285 deletions(-) diff --git a/GPS/PuntosDeInteres.aspx.vb b/GPS/PuntosDeInteres.aspx.vb index 7da5bfd10..0029bed99 100644 --- a/GPS/PuntosDeInteres.aspx.vb +++ b/GPS/PuntosDeInteres.aspx.vb @@ -39,23 +39,22 @@ Partial Class GPS_PuntosDeInteres End Sub Private Sub CargaDatos() - Dim gps As New ClsGPS - If gps.PuntoDeInteresGrupoGet(-1, 1) Then - GvGrupos.DataSource = gps.DtResultados - Else - GvGrupos.DataSource = Nothing + Dim ObjGPS As New ClsGPS + If ObjGPS.PuntoDeInteresGrupoGet(UsuarioActual.CveCliente, 1) Then + GvGrupos.DataSource = ObjGPS.DtResultados End If - If gps.PuntoDeInteresGet(-1, UsuarioActual.CveCliente, 1, -1) Then - GvPuntos.DataSource = gps.DtResultados - GVPuntosInteres.DataSource = gps.DtResultados - Else - GvPuntos.DataSource = Nothing - GVPuntosInteres.DataSource = Nothing + + If ObjGPS.PuntoDeInteresGet(-1, UsuarioActual.CveCliente, 1, -1) Then + GvPuntos.DataSource = ObjGPS.DtResultados + GVPuntosInteres.DataSource = ObjGPS.DtResultados End If - gps.Dispose() + + ObjGPS.Dispose() + GvGrupos.DataBind() GvPuntos.DataBind() GVPuntosInteres.DataBind() + UpEditar.Update() End Sub @@ -65,7 +64,6 @@ Partial Class GPS_PuntosDeInteres End If End Sub - Protected Sub BtnAgregarPunto_Click(sender As Object, e As EventArgs) Handles BtnAgregarPunto.Click Dim GPS As New ClsGPS GPS.IniciaTransacSQL() @@ -110,7 +108,7 @@ Partial Class GPS_PuntosDeInteres Alert("Es necesario seleccionar un grupo de puntos", TipoMensaje.MsgAdvertencia) Exit Sub End If - If GPS.PuntoDeInteresGet(-1, -1, 1, HdnGrupo.Value.ToEntero) AndAlso GPS.DtResultados.Rows.Count > 0 Then + If GPS.PuntoDeInteresGet(-1, UsuarioActual.CveCliente, 1, HdnGrupo.Value.ToEntero) AndAlso GPS.DtResultados.Rows.Count > 0 Then Dim ruta As String = "" For Each row As DataRow In GPS.DtResultados.Rows ruta += row("Punto").ToString.Replace("POINT (", "").Replace(")", ",") diff --git a/GPS/RepPuntosDeInteres.aspx b/GPS/RepPuntosDeInteres.aspx index 393b829f2..ffbeffbf4 100644 --- a/GPS/RepPuntosDeInteres.aspx +++ b/GPS/RepPuntosDeInteres.aspx @@ -1,46 +1,46 @@ -<%@ Page Title="" Language="VB" MasterPageFile="~/SiteGPS.master" AutoEventWireup="false" CodeFile="RepPuntosDeInteres.aspx.vb" Inherits="GPS_RepPuntosDeInteres" %> - - - - - - - - -
- - - - - - - - + + + + + + + + + + + + + + + + + + + + + + + + - + -
- -
  • + + + +
  • - -
  • -
    - + + + + - + + - - - + + + diff --git a/GPS/RepPuntosDeInteres.aspx.vb b/GPS/RepPuntosDeInteres.aspx.vb index 3b818619e..444cad665 100644 --- a/GPS/RepPuntosDeInteres.aspx.vb +++ b/GPS/RepPuntosDeInteres.aspx.vb @@ -3,6 +3,7 @@ Imports Extensiones Imports System.Data Imports Microsoft.Reporting.WebForms +Imports GemBox.Spreadsheet Partial Class GPS_RepPuntosDeInteres Inherits ClsPaginas @@ -24,6 +25,14 @@ Partial Class GPS_RepPuntosDeInteres ViewState("DtDatosReporte") = value End Set End Property + Private Property DtVisitas As DataTable + Get + Return If(IsNothing(ViewState("DtVisitas")), Nothing, CType(ViewState("DtVisitas"), DataTable)) + End Get + Set(value As DataTable) + ViewState("DtVisitas") = value + End Set + End Property #End Region Protected Sub Page_Load(sender As Object, e As EventArgs) Handles Me.Load @@ -32,6 +41,7 @@ Partial Class GPS_RepPuntosDeInteres End If End Sub Private Sub CargaDatos() + DtDatosReporte = Nothing txtFechaF.Text = Now.ToString("dd/MM/yyyy") txtFechaI.Text = Now.AddDays(-7).ToString("dd/MM/yyyy") @@ -66,6 +76,11 @@ Partial Class GPS_RepPuntosDeInteres End Sub Private Sub ReportePuntos(Dispositivos As String) + 'LIMPIAR REPORTE + If DtDatosReporte IsNot Nothing Then + DtDatosReporte.Dispose() + DtDatosReporte = Nothing + End If Dim FechaI, FechaF As Date Dim SBBody As New StringBuilder @@ -83,11 +98,15 @@ Partial Class GPS_RepPuntosDeInteres Try For Each row As GridViewRow In GvPuntos.Rows SBBody.Clear() + If row.FCCheckBox("chkGR").Checked Then If ObjGPS.RepPuntosGet(row.DataKey("CvePuntoDeInteres").ToEntero, Dispositivos, txtFechaI.Text.ToDateTime, txtFechaF.Text.ToDateTime, UsuarioActual.CveCliente) Then - DtDatosReporte = ObjGPS.DtResultados.Copy() - GvBarra.DataSource = DtDatosReporte + If DtDatosReporte IsNot Nothing Then + DtDatosReporte.Merge(ObjGPS.DtResultados) + Else + DtDatosReporte = ObjGPS.DtResultados.Copy() + End If Coords = SQLToGmaps(row.DataKey("Punto").ToString, "POINT") SBBody.Append($"
    ") @@ -98,7 +117,7 @@ Partial Class GPS_RepPuntosDeInteres SBBody.Append($"
    ") For Each Cve As String In DispositivosLista If ObjGPS.DtResultados.FiltraParametros($"CveDispositivo = {Cve} ").Rows.Count > 0 Then - SBBody.Append($"") + SBBody.Append($"") SBBody.Append($"") End If Next @@ -111,7 +130,11 @@ Partial Class GPS_RepPuntosDeInteres RegistraScript($"CreaCirculo({Coords},'{Color}');CreaMarcador({Coords},'{row.DataKey("PuntoDeInteres")}','{SBBody.ToString}');", row.DataKey("CvePuntoDeInteres")) End If End If + Next + + GvBarra.DataSource = DtDatosReporte + GvBarra.DataBind() Catch ex As Exception OnError("Ocurrió un error al consultar los puntos de interes", ex) End Try @@ -162,13 +185,32 @@ Partial Class GPS_RepPuntosDeInteres Protected Sub BtnCargarGV_Click(sender As Object, e As EventArgs) Handles BtnCargarGV.Click - Dim GPS As New ClsGPS - If GPS.RepPuntosDetalleGet(HdnPunto.Value.ToEntero, HdnDispositivo.Value.ToEntero, txtFechaI.Text.ToDateTime, txtFechaF.Text.ToDateTime, UsuarioActual.CveCliente) Then - GVHistorico.DataSource = GPS.DtResultados.FiltraParametros("CveEvento = 106") - Else - GVHistorico.DataSource = Nothing - End If - GPS.Dispose() + DtVisitas = Nothing + + Dim ObjGPS As New ClsGPS + Try + Dim PuntoInteres As String = "", Vehiculo As String = "" + + If ObjGPS.PuntoDeInteresGet(HdnPunto.Value.ToEntero, UsuarioActual.CveCliente, 1, -1) Then + PuntoInteres = ObjGPS.DtResultados.FiltroPrimeroValor("PuntoDeInteres") + End If + + Vehiculo = GlobalDTDispositivos(UsuarioActual.CveCliente).FiltroPrimeroValor("NoEconomico", $"CveDispositivo={HdnDispositivo.Value.ToEntero}") + + LblPU.Text = PuntoInteres + LblUnidad.Text = Vehiculo + + If ObjGPS.RepPuntosDetalleGet(HdnPunto.Value.ToEntero, HdnDispositivo.Value.ToEntero, txtFechaI.Text.ToDateTime, txtFechaF.Text.ToDateTime, UsuarioActual.CveCliente) Then + DtVisitas = ObjGPS.DtResultados.FiltraParametros("CveEvento = 106") + GVHistorico.DataSource = DtVisitas + Else + GVHistorico.DataSource = Nothing + End If + Catch ex As Exception + OnError("Ocurrió un error al cargar las visitas", ex) + End Try + ObjGPS.Dispose() + GVHistorico.DataBind() UpdatePanel3.Update() RegistraScript("$('#dvHistorico').modal()") @@ -192,21 +234,215 @@ Partial Class GPS_RepPuntosDeInteres End Sub Public Sub EnviarReporteProgramado(Format As String) - Dim RutaReporte = "Empresas/Grales/ReportesProgramados/RPTPuntosInteres.rdlc" - Dim NombreReporte = "ReportePuntosInteres" - Try - Dim RptParametro As New List(Of ReportParameter) - RptParametro.Add(New ReportParameter("FechaInicio", txtFechaI.Text)) - RptParametro.Add(New ReportParameter("FechaFin", txtFechaF.Text)) - RptParametro.Add(New ReportParameter("UsuarioImprimio", UsuarioActual.Usuario)) - RptParametro.Add(New ReportParameter("FechaImpresion", DateTime.Now.ToShortDateString)) + If Format = "EXCEL" Then + Dim filtros As String = $"Fecha Inicio: {txtFechaI.Text}, Fecha Fin: {txtFechaF.Text}" - Dim retorno = StreamPDF(RutaReporte, DtDatosReporte, RptParametro, $"{NombreReporte}{Date.Now.ToShortDateString}", Format, MR:=Nothing, RDSName:="DsOC") + Dim DtImprimir As DataTable = DtDatosReporte.Copy() - ImprimirbytesPDF(retorno, $"{NombreReporte}{Date.Now.ToShortDateString}", Format) - Catch ex As Exception - GuardaLog(String.Format("Ocurrio un error al generar el reporte RLDC {0}", ex)) - End Try - End Sub + DtImprimir.Columns.Remove(DtImprimir.Columns("CveDispositivo")) + + DtImprimir.Columns("PuntoDeInteres").SetOrdinal(0) + DtImprimir.Columns("Vehiculo").SetOrdinal(1) + DtImprimir.Columns("UltimaVisita").SetOrdinal(2) + DtImprimir.Columns("Visitas").SetOrdinal(3) + + DtImprimir.Columns("PuntoDeInteres").ColumnName = "Punto de Interés" + DtImprimir.Columns("Vehiculo").ColumnName = "Vehículo" + DtImprimir.Columns("UltimaVisita").ColumnName = "Última Visita" + + ImprimirExcelG(DtImprimir, "ReportePuntosInteres.xlsx", "Reporte de Puntos de Interés", filtros, NombreHoja:="ReportePuntosInteres") + Else + Dim RutaReporte = "Empresas/Grales/ReportesProgramados/RPTPuntosInteres.rdlc" + Dim NombreReporte = "ReportePuntosInteres" + Try + Dim Nombre As String = "" + Dim ObjClientes As New ClsClientes + If ObjClientes.GetClientes(UsuarioActual.CveCliente, "-1", "-1", "-1", "-1", "-1", "-1", -1, -1, Estatus:=-1) Then Nombre = ObjClientes.DtResultados.FiltroPrimeroValor("Nombre") + ObjClientes.Dispose() + + Dim RptParametro As New List(Of ReportParameter) + RptParametro.Add(New ReportParameter("FechaInicio", txtFechaI.Text)) + RptParametro.Add(New ReportParameter("FechaFin", txtFechaF.Text)) + RptParametro.Add(New ReportParameter("UsuarioImprimio", UsuarioActual.Usuario)) + RptParametro.Add(New ReportParameter("FechaImpresion", DateTime.Now.ToShortDateString)) + RptParametro.Add(New ReportParameter("Cliente", Nombre)) + + 'Dim MR = New ReportViewer + 'MR.LocalReport.EnableHyperlinks = True + 'MR.HyperlinkTarget = "_blank" + + Dim retorno = StreamPDF(RutaReporte, DtDatosReporte, RptParametro, $"{NombreReporte}{Date.Now.ToShortDateString}", Format, MR:=Nothing, RDSName:="DsOC") + + ImprimirbytesPDF(retorno, $"{NombreReporte}{Date.Now.ToShortDateString}", Format) + Catch ex As Exception + GuardaLog(String.Format("Ocurrio un error al generar el reporte RLDC {0}", ex)) + End Try + End If + + End Sub + Protected Sub LnkImprimirEXCELVisita_Click(sender As Object, e As EventArgs) + Dim filtros As String = $"Punto de Interés: {LblPU.Text}, Vehículo: {LblUnidad.Text}" + + Dim DtImprimir As DataTable = DtVisitas.Copy() + + DtImprimir.Columns.Remove(DtImprimir.Columns("CveDispositivoEvento")) + DtImprimir.Columns.Remove(DtImprimir.Columns("CveEvento")) + DtImprimir.Columns.Remove(DtImprimir.Columns("FechaEvento")) + + DtImprimir.Columns("FechaEntrada").ColumnName = "Fecha Visita" + DtImprimir.Columns("Duracion").ColumnName = "Duración (min)" + + ImprimirExcelG(DtImprimir, "HistorialVistas.xlsx", "Historial de vistas", filtros, NombreHoja:="Historial") + End Sub + + Private Sub ImprimirExcelG(DtDatos As DataTable, Archivo As String, Titulo As String, Filtros As String, Optional NombreHoja As String = "Hoja1") + SpreadsheetInfo.SetLicense(ModExtensiones.SerialGemBoxSpreadsheet) + Dim excel As ExcelFile = New ExcelFile + + Dim TotalRowHeader As Integer = 8 + Dim TotalRowFooter As Integer = 2 + + Dim item = excel.Worksheets.Add(NombreHoja) + item.InsertDataTable(DtDatos, New InsertDataTableOptions() With + { + .ColumnHeaders = True, + .StartRow = 0, + .StartColumn = 0 + }) + item.Rows(0).Style.FillPattern.SetPattern(FillPatternStyle.Solid, SpreadsheetColor.FromArgb(75, 119, 190), SpreadsheetColor.FromArgb(255, 255, 255)) + item.Rows(0).Style.Font.Color = SpreadsheetColor.FromArgb(255, 255, 255) + + Dim columnCount = item.CalculateMaxUsedColumns() + For i = 0 To columnCount + item.Columns(i).AutoFit(1, item.Rows(i), item.Rows(item.Rows.Count - 1)) + Next + + + Dim worksheet = excel.Worksheets(0) + worksheet.Rows.InsertEmpty(0, TotalRowHeader) + Dim celdasConTexto = worksheet.GetUsedCellRange(True) + celdasConTexto.Style.Font.Name = "Calibri Light" + + Dim RangoNombreEmpresa = worksheet.Cells.GetSubrangeAbsolute(1, celdasConTexto.FirstColumnIndex, 1, celdasConTexto.LastColumnIndex) + RangoNombreEmpresa.Merged = True + + Dim Nombre As String = "" + + Dim ObjClientes As New ClsClientes + If ObjClientes.GetClientes(UsuarioActual.CveCliente, "-1", "-1", "-1", "-1", "-1", "-1", -1, -1, Estatus:=-1) Then Nombre = ObjClientes.DtResultados.FiltroPrimeroValor("Nombre") + ObjClientes.Dispose() + + RangoNombreEmpresa.Value = Nombre + RangoNombreEmpresa.Style.Font.Size = 18 * 20 + RangoNombreEmpresa.Style.Font.Name = "Calibri Light" + RangoNombreEmpresa.Style.HorizontalAlignment = GemBox.Spreadsheet.HorizontalAlignmentStyle.Center + RangoNombreEmpresa.Style.VerticalAlignment = GemBox.Spreadsheet.VerticalAlignmentStyle.Center + + + Dim RangoTitulo = worksheet.Cells.GetSubrangeAbsolute(3, celdasConTexto.FirstColumnIndex, 3, celdasConTexto.LastColumnIndex) + RangoTitulo.Merged = True + RangoTitulo.Value = Titulo + RangoTitulo.Style.Font.Size = 20 * 20 + RangoTitulo.Style.Font.Name = "Calibri Light" + RangoTitulo.Style.HorizontalAlignment = GemBox.Spreadsheet.HorizontalAlignmentStyle.Center + RangoTitulo.Style.VerticalAlignment = GemBox.Spreadsheet.VerticalAlignmentStyle.Center + + + 'If FechaIMes.Trim.Length > 0 And FechaFMes.Trim.Length > 0 Then + ' Dim RangoFechas = worksheet.Cells.GetSubrangeAbsolute(4, celdasConTexto.FirstColumnIndex, 4, celdasConTexto.LastColumnIndex) + ' RangoFechas.Merged = True + ' RangoFechas.Value = $"Fechas: {FechaIMes} a {FechaFMes}" + ' RangoFechas.Style.Font.Size = 15 * 20 + ' RangoFechas.Style.Font.Name = "Calibri Light" + ' RangoFechas.Style.HorizontalAlignment = GemBox.Spreadsheet.HorizontalAlignmentStyle.Center + ' RangoFechas.Style.VerticalAlignment = GemBox.Spreadsheet.VerticalAlignmentStyle.Center + 'End If + + + 'If SubProyecto.Length > 0 Then + ' Dim RangoSubProyecto = worksheet.Cells.GetSubrangeAbsolute(5, celdasConTexto.FirstColumnIndex, 5, celdasConTexto.LastColumnIndex) + ' RangoSubProyecto.Merged = True + ' RangoSubProyecto.Value = SubProyecto + ' RangoSubProyecto.Style.Font.Size = 20 * 20 + ' RangoSubProyecto.Style.Font.Name = "Calibri Light" + ' RangoSubProyecto.Style.HorizontalAlignment = GemBox.Spreadsheet.HorizontalAlignmentStyle.Center + ' RangoSubProyecto.Style.VerticalAlignment = GemBox.Spreadsheet.VerticalAlignmentStyle.Center + 'End If + + + If Not String.IsNullOrEmpty(Filtros) Then + Dim RangoDatoTituloExtra = worksheet.Cells.GetSubrangeAbsolute(6, celdasConTexto.FirstColumnIndex, 6, celdasConTexto.LastColumnIndex) + RangoDatoTituloExtra.Merged = True + RangoDatoTituloExtra.Value = Filtros + RangoDatoTituloExtra.Style.Font.Size = 15 * 20 + RangoDatoTituloExtra.Style.Font.Name = "Calibri Light" + RangoDatoTituloExtra.Style.HorizontalAlignment = GemBox.Spreadsheet.HorizontalAlignmentStyle.Center + RangoDatoTituloExtra.Style.VerticalAlignment = GemBox.Spreadsheet.VerticalAlignmentStyle.Center + End If + + + For i = celdasConTexto.FirstColumnIndex To celdasConTexto.LastColumnIndex + + worksheet.Rows(8).Cells(i).Style.Font.Size = 12 * 20 + worksheet.Rows(8).Cells(i).Style.HorizontalAlignment = GemBox.Spreadsheet.HorizontalAlignmentStyle.Center + worksheet.Rows(8).Cells(i).Style.VerticalAlignment = GemBox.Spreadsheet.VerticalAlignmentStyle.Center + + worksheet.Rows(8).Cells(i).Style.FillPattern.SetPattern(GemBox.Spreadsheet.FillPatternStyle.Solid, GemBox.Spreadsheet.SpreadsheetColor.FromArgb(75, 119, 190), GemBox.Spreadsheet.SpreadsheetColor.FromArgb(255, 255, 255)) + worksheet.Rows(8).Cells(i).Style.Font.Color = GemBox.Spreadsheet.SpreadsheetColor.FromArgb(255, 255, 255) + + + + If i > 0 Then + Try + worksheet.Columns(i).AutoFit(1) + Catch ex As Exception + End Try + End If + + Next + + + + Dim IndexEndTable As Integer = DtDatos.Rows.Count + TotalRowHeader + TotalRowFooter + + worksheet.Rows(IndexEndTable).Cells(0).Value = "Usuario Imprimió" + worksheet.Rows(IndexEndTable + 1).Cells(0).Value = UsuarioActual.Nombre + + worksheet.Rows(IndexEndTable).Cells(2).Value = "Fecha Impresión" + worksheet.Rows(IndexEndTable + 1).Cells(2).Value = DateTime.Now.ToString("dd/MM/yyyy") + + 'Dim Imagen As New System.IO.FileInfo(String.Format("{0}/Logo.png", UsuarioActual.Empresa.Ruta)) + + 'If Imagen.Exists Then + ' Dim Ruta As String = String.Format("{0}/Logo.png", UsuarioActual.Empresa.Ruta) + ' Using sr As New StreamReader(Ruta) + ' Dim ms As New MemoryStream() + ' sr.BaseStream.CopyTo(ms) + ' worksheet.Pictures.Add(ms, ExcelPictureFormat.Png, "A1", 100, 100, LengthUnit.Pixel) + ' End Using + 'End If + + + For I = celdasConTexto.FirstColumnIndex To celdasConTexto.LastColumnIndex + + If I > 0 Then + + 'If Divisor = 1 Then + ' worksheet.Columns(I + 1).Style.NumberFormat = "#,##0.00" + 'Else + ' worksheet.Columns(I + 1).Style.NumberFormat = "#,##" + 'End If + + Try + worksheet.Columns(I).AutoFit(1) + Catch ex As Exception + End Try + + End If + Next + + excel.Save(Me.Response, Archivo, SaveOptions.XlsxDefault) + + End Sub End Class
    {ObjGPS.DtResultados.FiltroPrimeroValor("Vehiculo", $"CveDispositivo = {Cve}")}: {ObjGPS.DtResultados.FiltroPrimeroValor("Visitas", $"CveDispositivo = {Cve}")} visitas
    {ObjGPS.DtResultados.FiltroPrimeroValor("Vehiculo", $"CveDispositivo = {Cve}")}: {ObjGPS.DtResultados.FiltroPrimeroValor("Visitas", $"CveDispositivo = {Cve}")} visitas
    Última Visita: {ObjGPS.DtResultados.FiltroPrimeroValor("UltimaVisita", $"CveDispositivo = {Cve}")}