diff --git a/App_Code/ClsPaginas.vb b/App_Code/ClsPaginas.vb index 794311cff..42189afb9 100644 --- a/App_Code/ClsPaginas.vb +++ b/App_Code/ClsPaginas.vb @@ -4989,6 +4989,7 @@ Public Class ClsPaginas PaginaDict.Add("/General/CatMedidas.aspx".ToUpper(), 712) PaginaDict.Add("/General/CatSatListado69B.aspx".ToUpper, 1038) PaginaDict.Add("/General/CatMedidaEquivalencia.aspx".ToUpper(), 773) + PaginaDict.Add("/General/RepIndicadorResumen.aspx".ToUpper(), 110) #End Region diff --git a/General/RepIndicadorResumen.aspx b/General/RepIndicadorResumen.aspx new file mode 100644 index 000000000..4ed1ed6ac --- /dev/null +++ b/General/RepIndicadorResumen.aspx @@ -0,0 +1,423 @@ +<%@ Page Title="" Language="VB" MasterPageFile="~/Site.master" AutoEventWireup="false" CodeFile="RepIndicadorResumen.aspx.vb" Inherits="General_RepIndicadorResumen" %> + + + <%--
  • + Exportar +
  • +
  • + Imprimir +
  • --%> +
    + + + + + + + Reporte de Resumen de Indicadores + + + + <%--Tabla con los campos para filtrar--%> + + +
    +
    +
    + + "> + +
    +
    +
    + +
    Fecha Inicio
    +
    +
    + + + + +
    + + +
    + +
    Fecha Fin
    +
    +
    + + + + +
    + + +
    + +
    SubProyecto
    +
    + + +
    + +
    + +
    +
    +
    > +
    +
    + + + + + + +
    +
    + + +
    +
    + + Ventas por Productos +
    +
    +
    +
    +
    +
    + +
    +
    +
    + + + + + + + +
    +
    +
    +
    + +
    + + +
    +
    + + Ventas por Productos - Gráfica +
    +
    +
    +
    +
    +
    + +
    +
    +
    +
    +
    +
    +
    +
    +
    + +
    +
    + + +
    +
    + + Compras por Productos +
    +
    +
    +
    +
    +
    + +
    +
    +
    + + + + + + + +
    +
    +
    +
    + +
    + + +
    +
    + + Compras por Productos - Gráfica +
    +
    +
    +
    +
    +
    + +
    +
    +
    +
    +
    +
    +
    +
    +
    + +
    +
    + + +
    +
    + + Cuentas por cobrar por Cliente +
    +
    +
    +
    +
    +
    + +
    +
    +
    + + + + + + +
    +
    +
    +
    + +
    + + +
    +
    + + Cuentas por cobrar por Cliente - Gráfica +
    +
    +
    +
    +
    +
    + +
    +
    +
    +
    +
    +
    +
    +
    +
    + +
    +
    + + +
    +
    + + Cuentas por pagar por Proveedor +
    +
    +
    +
    +
    +
    + +
    +
    +
    + + + + + + +
    +
    +
    +
    + +
    + + +
    +
    + + Cuentas por pagar por Proveedor - Gráfica +
    +
    +
    +
    +
    +
    + +
    +
    +
    +
    +
    +
    +
    +
    +
    + +
    + + + + +
    + +
    +
    + +
    + + + + + + + + + + + diff --git a/General/RepIndicadorResumen.aspx.vb b/General/RepIndicadorResumen.aspx.vb new file mode 100644 index 000000000..548df5c57 --- /dev/null +++ b/General/RepIndicadorResumen.aspx.vb @@ -0,0 +1,432 @@ +Imports System.Data +Imports Extensiones +Imports Microsoft.Reporting.WebForms + +Partial Class General_RepIndicadorResumen + Inherits ClsPaginas +#Region "propiedades" + + Private Property VxP As DataTable + Get + + If ViewState("VxP") Is Nothing Then + Return New DataTable + Else + Return DirectCast(ViewState("VxP"), DataTable) + End If + + End Get + Set(value As DataTable) + ViewState("VxP") = value + End Set + End Property + Private Property CxP As DataTable + Get + + If ViewState("CxP") Is Nothing Then + Return New DataTable + Else + Return DirectCast(ViewState("CxP"), DataTable) + End If + + End Get + Set(value As DataTable) + ViewState("CxP") = value + End Set + End Property + + Private Property CCxC As DataTable + Get + + If ViewState("CCxC") Is Nothing Then + Return New DataTable + Else + Return DirectCast(ViewState("CCxC"), DataTable) + End If + + End Get + Set(value As DataTable) + ViewState("CCxC") = value + End Set + End Property + Private Property CPxP As DataTable + Get + + If ViewState("CPxP") Is Nothing Then + Return New DataTable + Else + Return DirectCast(ViewState("CPxP"), DataTable) + End If + + End Get + Set(value As DataTable) + ViewState("CPxP") = value + End Set + End Property + + Private Property DtColor As DataTable + Get + + If ViewState("DtColor") Is Nothing Then + Return New DataTable + Else + Return DirectCast(ViewState("DtColor"), DataTable) + End If + + End Get + Set(value As DataTable) + ViewState("DtColor") = value + End Set + End Property + +#End Region + + Protected Sub Page_Load(sender As Object, e As EventArgs) Handles Me.Load + If Not IsPostBack Then + CargaCombos() + CargaDatos() + End If + End Sub + + + Private Sub CargaCombos() + + 'Carga SubProyectos + DdlSubProyecto.DataSource = GlobalDTSubProyectosUsuarios(UsuarioActual.CveUsuario, -1, UsuarioActual.CveEmpresa, -1, 1) + DdlSubProyecto.DataBind() + DdlSubProyecto.Items.Insert(0, New ListItem("Todos", "-1")) + + TxtFechaI.Text = $"01/{Now.Month}/{Now.Year}" + TxtFechaF.Text = Now.ToString("dd/MM/yyyy") + + CreaDataTableColor() + End Sub + + + Protected Sub BtnConsultar_Click(sender As Object, e As EventArgs) Handles btnConsultar.Click + CargaDatos() + End Sub + + + Private Sub CargaDatos() + + Dim ObjVentas As New ClsVentas + Dim ObjCompras As New ClsCompras + Dim ObjMovtos As New ClsMovimientos() + + If ObjVentas.GetRepProductosServicios(-1, DdlSubProyecto.SelectedValue.ToEntero, -1, -1, -1, TxtFechaI.Text.Trim(), TxtFechaF.Text.Trim(), MinFecha, MaxFecha, -1, + -1, -1, -1, -1, "-1", UsuarioActual.CveEmpresa, 5, CveUsuarioConsulta:=UsuarioActual.CveUsuario, TipoCambio:=1) Then + VxP = ObjVentas.DtResultados + GvVxP.DataSource = VxP + Else + GvVxP.DataSource = Nothing + VxP = Nothing + End If + + If ObjCompras.GetRepProductosServicios(-1, DdlSubProyecto.SelectedValue.ToEntero, -1, -1, -1, TxtFechaI.Text.Trim(), TxtFechaF.Text.Trim(), -1, -1, -1, + UsuarioActual.CveEmpresa, 5, -1, -1, "-1", "-1", -1, TipoCambio:=1, CveUsuarioConsulta:=UsuarioActual.CveUsuario) Then + CxP = ObjCompras.DtResultados + GvCxP.DataSource = CxP + Else + GvCxP.DataSource = Nothing + CxP = Nothing + End If + + Dim FechaCorte As String = $"31/12/{Now.Year}" + + If ObjMovtos.GetCxC(TxtFechaI.Text, TxtFechaF.Text, -1, DdlSubProyecto.SelectedValue.ToEntero, -1, -1, -1, "-1", UsuarioActual.CveEmpresa, 5, -1, 1, -1, + "-1", "-1", "-1", FechaCorte:=FechaCorte.ToDate, CveUsuarioConsulta:=UsuarioActual.CveUsuario) Then + + CCxC = ObjMovtos.DtResultados + GvCCxC.DataSource = CCxC + Else + GvCCxC.DataSource = Nothing + CCxC = Nothing + End If + + If ObjMovtos.GetCxP(TxtFechaI.Text, TxtFechaF.Text, -1, DdlSubProyecto.SelectedValue.ToEntero, -1, -1, -1, "-1", UsuarioActual.CveEmpresa, 5, -1, 1, -1, + "-1", "-1", "-1", FechaCorte:=FechaCorte.ToDate, CveUsuarioConsulta:=UsuarioActual.CveUsuario) Then + + CPxP = ObjMovtos.DtResultados + GvCPxP.DataSource = CPxP + Else + GvCPxP.DataSource = Nothing + CPxP = Nothing + End If + + ObjVentas.Dispose() + ObjCompras.Dispose() + ObjMovtos.Dispose() + + GvVxP.DataBind() + GvCxP.DataBind() + GvCCxC.DataBind() + GvCPxP.DataBind() + + ' Mostrar gráficos solo si hay datos en su respectiva tabla + If GvVxP.Rows.Count > 0 Then + UPGraficaVxP.Visible = True + Else + UPGraficaVxP.Visible = False + End If + If GvCxP.Rows.Count > 0 Then + UPGraficaCxP.Visible = True + Else + UPGraficaCxP.Visible = False + End If + If GvCCxC.Rows.Count > 0 Then + UPGraficaCCxC.Visible = True + Else + UPGraficaCCxC.Visible = False + End If + If GvCPxP.Rows.Count > 0 Then + UPGraficaCPxP.Visible = True + Else + UPGraficaCPxP.Visible = False + End If + + ' Si no había datos en ninguna tabla no cargar función de gráficos + If (GvVxP.Rows.Count = 0 AndAlso GvCxP.Rows.Count = 0 AndAlso GvCCxC.Rows.Count = 0 AndAlso GvCPxP.Rows.Count = 0) Then Exit Sub + GraficasPastel() + 'GraficasBarras() + End Sub + Protected Sub GvVxP_RowDataBound(sender As Object, e As System.Web.UI.WebControls.GridViewRowEventArgs) Handles GvVxP.RowDataBound + If e.Row.RowType = DataControlRowType.DataRow Then + If e.Row.DBCampo("Orden") = "" Then + e.Row.CssClass = "Totales" + End If + End If + End Sub + Protected Sub GvCxP_RowDataBound(sender As Object, e As System.Web.UI.WebControls.GridViewRowEventArgs) Handles GvCxP.RowDataBound + If e.Row.RowType = DataControlRowType.DataRow Then + If e.Row.DBCampo("Orden") = "" Then + e.Row.CssClass = "Totales" + End If + End If + End Sub + Protected Sub GvCCxC_RowDataBound(sender As Object, e As System.Web.UI.WebControls.GridViewRowEventArgs) Handles GvCCxC.RowDataBound + If e.Row.RowType = DataControlRowType.DataRow Then + If e.Row.DBCampo("Orden") = "" Then + e.Row.CssClass = "Totales" + End If + End If + End Sub + Protected Sub GvCPxP_RowDataBound(sender As Object, e As System.Web.UI.WebControls.GridViewRowEventArgs) Handles GvCPxP.RowDataBound + If e.Row.RowType = DataControlRowType.DataRow Then + If e.Row.DBCampo("Orden") = "" Then + e.Row.CssClass = "Totales" + End If + End If + End Sub + Private Sub CreaDataTableColor() + DtColor = New DataTable + DtColor.Columns.Add("Color") + Dim RowColor As DataRow = Nothing + RowColor = DtColor.NewRow() + RowColor("Color") = "#FF0F00" + DtColor.Rows.Add(RowColor) + RowColor = Nothing + RowColor = DtColor.NewRow() + RowColor("Color") = "#FF6600" + DtColor.Rows.Add(RowColor) + RowColor = Nothing + RowColor = DtColor.NewRow() + RowColor("Color") = "#FF9E01" + DtColor.Rows.Add(RowColor) + RowColor = Nothing + RowColor = DtColor.NewRow() + RowColor("Color") = "#FCD202" + DtColor.Rows.Add(RowColor) + RowColor = Nothing + RowColor = DtColor.NewRow() + RowColor("Color") = "#F8FF01" + DtColor.Rows.Add(RowColor) + RowColor = Nothing + RowColor = DtColor.NewRow() + RowColor("Color") = "#B0DE09" + DtColor.Rows.Add(RowColor) + RowColor = Nothing + RowColor = DtColor.NewRow() + RowColor("Color") = "#04D215" + DtColor.Rows.Add(RowColor) + RowColor = Nothing + RowColor = DtColor.NewRow() + RowColor("Color") = "#0D8ECF" + DtColor.Rows.Add(RowColor) + RowColor = Nothing + RowColor = DtColor.NewRow() + RowColor("Color") = "#0D52D1" + DtColor.Rows.Add(RowColor) + RowColor = Nothing + RowColor = DtColor.NewRow() + RowColor("Color") = "#2A0CD0" + DtColor.Rows.Add(RowColor) + RowColor = Nothing + RowColor = DtColor.NewRow() + RowColor("Color") = "#8A0CCF" + DtColor.Rows.Add(RowColor) + RowColor = Nothing + RowColor = DtColor.NewRow() + RowColor("Color") = "#CD0D74" + DtColor.Rows.Add(RowColor) + RowColor = Nothing + RowColor = DtColor.NewRow() + RowColor("Color") = "#754DEB" + DtColor.Rows.Add(RowColor) + RowColor = Nothing + RowColor = DtColor.NewRow() + RowColor("Color") = "#DDDDDD" + DtColor.Rows.Add(RowColor) + RowColor = Nothing + RowColor = DtColor.NewRow() + RowColor("Color") = "#999999" + DtColor.Rows.Add(RowColor) + RowColor = Nothing + RowColor = DtColor.NewRow() + RowColor("Color") = "#333333" + DtColor.Rows.Add(RowColor) + RowColor = Nothing + RowColor = DtColor.NewRow() + RowColor("Color") = "#000000" + DtColor.Rows.Add(RowColor) + End Sub + + Private Sub GraficasPastel() + + Dim DtVxP, DtCxP, DtCCxC, DtCPxP As New DataTable + Dim RowColorIndex As Integer = 0 + + 'Ventas x Producto + DtVxP.Reset() + DtVxP.Columns.Add("Texto") + DtVxP.Columns.Add("Valor") + DtVxP.Columns.Add("Color") + DtVxP.Columns.Add("Moneda") + RowColorIndex = 0 + For Each Dr As DataRow In VxP.Rows + If Not Dr("Orden").ToString = "" Then + Dim Row As DataRow = Nothing + Row = DtVxP.NewRow() + Row("Texto") = $"{Dr("GPO").ToString} {GlobalDTMonedas().FiltraParametros($"CveMoneda = {Dr("CveMoneda").ToString}").Rows(0)("Abreviatura").ToString}" + Row("Valor") = Dr("SubTotal").ToString.FormatoNumero + Row("Color") = DtColor.Rows(RowColorIndex)("Color").ToString + Row("Moneda") = Dr("Moneda").ToString + DtVxP.Rows.Add(Row) + RowColorIndex += 1 + If RowColorIndex = 17 Then + RowColorIndex = 0 + End If + End If + Next + Dim query_vxp = From s In DtVxP.AsEnumerable() Select New With {.Texto = s("Texto").ToString(), .Valor = s("Valor").ToString().ToDouble(), .Color = s("Color").ToString(), .Moneda = s("Moneda").ToString()} + + 'Compras x Producto + DtCxP.Reset() + DtCxP.Columns.Add("Texto") + DtCxP.Columns.Add("Valor") + DtCxP.Columns.Add("Color") + DtCxP.Columns.Add("Moneda") + RowColorIndex = 0 + For Each Dr As DataRow In CxP.Rows + If Not Dr("Orden").ToString = "" Then + Dim Row As DataRow = Nothing + Row = DtCxP.NewRow() + Row("Texto") = $"{Dr("GPO").ToString} {GlobalDTMonedas().FiltraParametros($"CveMoneda = {Dr("CveMoneda").ToString}").Rows(0)("Abreviatura").ToString}" + Row("Valor") = Dr("SubTotal").ToString.FormatoNumero + Row("Color") = DtColor.Rows(RowColorIndex)("Color").ToString + Row("Moneda") = Dr("Moneda").ToString + DtCxP.Rows.Add(Row) + RowColorIndex += 1 + If RowColorIndex = 17 Then + RowColorIndex = 0 + End If + End If + Next + Dim query_cxp = From s In DtCxP.AsEnumerable() Select New With {.Texto = s("Texto").ToString(), .Valor = s("Valor").ToString().ToDouble(), .Color = s("Color").ToString(), .Moneda = s("Moneda").ToString()} + + 'Alert(Newtonsoft.Json.JsonConvert.SerializeObject(CCxC.Rows)) + + 'Cuentas por cobrar x Cliente + DtCCxC.Reset() + DtCCxC.Columns.Add("Texto") + DtCCxC.Columns.Add("Valor") + DtCCxC.Columns.Add("Color") + DtCCxC.Columns.Add("Moneda") + RowColorIndex = 0 + For Each Dr As DataRow In CCxC.Rows + If Not Dr("Orden").ToString = "" Then + Dim Row As DataRow = Nothing + Row = DtCCxC.NewRow() + Row("Texto") = $"{Dr("GPO").ToString} {GlobalDTMonedas().FiltraParametros($"CveMoneda = {Dr("CveMoneda").ToString}").Rows(0)("Abreviatura").ToString}" + Row("Valor") = Dr("Saldo").ToString.FormatoNumero + Row("Color") = DtColor.Rows(RowColorIndex)("Color").ToString + Row("Moneda") = Dr("Moneda").ToString + DtCCxC.Rows.Add(Row) + RowColorIndex += 1 + If RowColorIndex = 17 Then + RowColorIndex = 0 + End If + End If + Next + Dim query_ccxc = From s In DtCCxC.AsEnumerable() Select New With {.Texto = s("Texto").ToString(), .Valor = s("Valor").ToString().ToDouble(), .Color = s("Color").ToString(), .Moneda = s("Moneda").ToString()} + + 'Cuentas por pagar x Proveedor + DtCPxP.Reset() + DtCPxP.Columns.Add("Texto") + DtCPxP.Columns.Add("Valor") + DtCPxP.Columns.Add("Color") + DtCPxP.Columns.Add("Moneda") + RowColorIndex = 0 + For Each Dr As DataRow In CPxP.Rows + If Not Dr("Orden").ToString = "" Then + Dim Row As DataRow = Nothing + Row = DtCPxP.NewRow() + Row("Texto") = $"{Dr("GPO").ToString} {GlobalDTMonedas().FiltraParametros($"CveMoneda = {Dr("CveMoneda").ToString}").Rows(0)("Abreviatura").ToString}" + Row("Valor") = Dr("Saldo").ToString.FormatoNumero + Row("Color") = DtColor.Rows(RowColorIndex)("Color").ToString + Row("Moneda") = Dr("Moneda").ToString + DtCPxP.Rows.Add(Row) + RowColorIndex += 1 + If RowColorIndex = 17 Then + RowColorIndex = 0 + End If + End If + Next + Dim query_cpxp = From s In DtCPxP.AsEnumerable() Select New With {.Texto = s("Texto").ToString(), .Valor = s("Valor").ToString().ToDouble(), .Color = s("Color").ToString(), .Moneda = s("Moneda").ToString()} + + 'Serializar datos agrupándolos en su respectivo DataTable, todos en un solo JSON + Dim json As String = Newtonsoft.Json.JsonConvert.SerializeObject(New With {.VxP = query_vxp, .CxP = query_cxp, .CCxC = query_ccxc, .CPxP = query_cpxp}) + 'Dim json As String = Newtonsoft.Json.JsonConvert.SerializeObject(New With {.VxP = query_vxp, .CCxC = New String() {}}) + 'Alert(json) + RegistraScript($"CargaGraficasPastel({json})", "22") + UPPMov.Update() + End Sub + Private Sub GraficasBarras() + '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 VxC.Rows + ' If Not Dr("Orden").ToString = "" Then + ' Dim Row As DataRow = Nothing + ' Row = Dt.NewRow() + ' Row("Texto") = $"{Dr("GPO").ToString} {GlobalDTMonedas().FiltraParametros($"CveMoneda = {Dr("CveMoneda").ToString}").Rows(0)("Abreviatura").ToString}" + ' Row("Valor") = Dr("SubTotal").ToString.FormatoNumero + ' Row("Color") = DtColor.Rows(RowColorIndex)("Color").ToString + ' Row("Moneda") = Dr("Moneda").ToString + ' Dt.Rows.Add(Row) + ' RowColorIndex += 1 + ' If RowColorIndex = 17 Then + ' RowColorIndex = 0 + ' End If + ' 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) + 'RegistraScript($"CargaGraficasBarras({json})", "22") + 'UPPMov.Update() + End Sub +End Class