From a995be08335bceea1c07f17386529fa13c73b724 Mon Sep 17 00:00:00 2001 From: MLopez Date: Sat, 10 Dec 2022 11:17:27 -0700 Subject: [PATCH] =?UTF-8?q?E172=20Rep=20Indicadores=20-=20Compras=20Produc?= =?UTF-8?q?tores=20Gr=C3=A1fica=20por=20Kg,=20ordenar=20y=20agrupar=20(top?= =?UTF-8?q?=2010=20y=20resto)=20correctamente=20en=20todas=20las=20tablas?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- General/RepIndicadorResumen.aspx | 24 +++++---- General/RepIndicadorResumen.aspx.vb | 82 +++++++++++++++++++---------- 2 files changed, 68 insertions(+), 38 deletions(-) diff --git a/General/RepIndicadorResumen.aspx b/General/RepIndicadorResumen.aspx index 032e123d6..54da8233f 100644 --- a/General/RepIndicadorResumen.aspx +++ b/General/RepIndicadorResumen.aspx @@ -202,7 +202,7 @@
- Compras por Productos - Proveedor Productor - Gráfica + Compras Productores - Gráfica por Cantidad(Kg)
@@ -313,7 +313,7 @@
- Cuentas por cobrar por Cliente - Gráfica + Cuentas por cobrar - Gráfica
@@ -441,12 +441,18 @@ title: { text: null }, + labels: { + //format: '${y} Kg' + } }, tooltip: { formatter: function (tooltip) { var tooltiptext = tooltip.defaultFormatter.call(this, tooltip); - tooltiptext = tooltiptext.replace("", "$"); - tooltiptext = tooltiptext.replace("", " " + this.point.currency + ""); + var isCurrency = /^(\d|-)?(\d|,)*\.?\d*$/.test(/(.*?)<\/b>/.exec(tooltiptext)); + if (isCurrency) { + tooltiptext = tooltiptext.replace("", "$"); + } + tooltiptext = tooltiptext.replace("", " " + this.point.unit + ""); console.log(tooltiptext) return tooltiptext }, @@ -466,11 +472,11 @@ type: "bar", dataLabels: { enabled: true, - // format: '${y}' + // format: '${y}' formatter: function () { var defaultlabel = Highcharts.getOptions().plotOptions[this.point.series.type].dataLabels.formatter.call(this); - var isNumber = /^(\d|-)?(\d|,)*\.?\d*$/.test(defaultlabel); - return isNumber ? "$" + defaultlabel : defaultlabel; + var isCurrency = /^(\d|-)?(\d|,)*\.?\d*$/.test(defaultlabel); + return isCurrency ? "$" + defaultlabel : defaultlabel; } } } @@ -478,7 +484,7 @@ series: [ { type: 'bar', - keys: ['name', 'y', 'color', 'currency'], + keys: ['name', 'y', 'color', 'unit'], data: undefined } ] @@ -501,7 +507,7 @@ function customAccessor(data) { const newData = []; data.forEach(function (point, index) { - newData.push([point.Texto, point.Valor, point.Color, point.Moneda]); + newData.push([point.Texto, point.Valor, point.Color, point.Unidad]); }); return newData; } diff --git a/General/RepIndicadorResumen.aspx.vb b/General/RepIndicadorResumen.aspx.vb index 37d32ec33..c9d29639c 100644 --- a/General/RepIndicadorResumen.aspx.vb +++ b/General/RepIndicadorResumen.aspx.vb @@ -96,11 +96,10 @@ Partial Class General_RepIndicadorResumen End If If ObjCitrus.GetIndicadores(UsuarioActual.CveEmpresa, TxtFechaI.Text, TxtFechaF.Text, UsuarioActual.CveUsuario, DdlSubProyecto.SelectedValue.ToEntero) Then - 'ObjCitrus.DTSetResultados.Tables(0).DefaultView.Sort = "CveMoneda,SubTotal DESC" + ObjCitrus.DTSetResultados.Tables(0).DefaultView.Sort = "Cantidad DESC" GvCxP192.DataSource = ObjCitrus.DTSetResultados.Tables(0).DefaultView.ToTable - 'ObjCitrus.DTSetResultados.Tables(1).DefaultView.Sort = "CveMoneda,SubTotal DESC" + ObjCitrus.DTSetResultados.Tables(1).DefaultView.Sort = "Moneda,SubTotal DESC" GvComprasAcreed.DataSource = ObjCitrus.DTSetResultados.Tables(1).DefaultView.ToTable - 'GvCPxP.DataSource = ObjCitrus.DTSetResultados.Tables(1).DefaultView.ToTable End If ObjVentas.Dispose() @@ -112,10 +111,11 @@ Partial Class General_RepIndicadorResumen GvCxP192.DataBind() GvComprasAcreed.DataBind() GvCCxC.DataBind() - 'GvCCxC.HeaderRow.Cells(1).Text = "Saldo" + If GvCCxC.DataSource IsNot Nothing Then + GvCCxC.HeaderRow.Cells(1).Text = "Saldo" + End If GvCPxP.DataBind() - 'Mostrar gráficos solo si hay datos en su respectiva tabla If GvVxP.Rows.Count > 0 Then UPGraficaVxP.Visible = True @@ -279,7 +279,7 @@ Partial Class General_RepIndicadorResumen DtVxP.Columns.Add("Texto") DtVxP.Columns.Add("Valor") DtVxP.Columns.Add("Color") - DtVxP.Columns.Add("Moneda") + DtVxP.Columns.Add("Unidad") RowColorIndex = 0 For Each Dr As DataRow In GvVxP.DataSource.Rows If Not Dr("Orden").ToString = "" Then @@ -288,7 +288,7 @@ Partial Class General_RepIndicadorResumen Row("Texto") = Dr("GPO").ToString Row("Valor") = Dr("SubTotal").ToString.FormatoNumero Row("Color") = DtColor.Rows(RowColorIndex)("Color").ToString - Row("Moneda") = $"{GlobalDTMonedas().FiltraParametros($"CveMoneda = {Dr("CveMoneda").ToString}").Rows(0)("Abreviatura").ToString}" + Row("Unidad") = $"{GlobalDTMonedas().FiltraParametros($"CveMoneda = {Dr("CveMoneda").ToString}").Rows(0)("Abreviatura").ToString}" DtVxP.Rows.Add(Row) RowColorIndex += 1 If RowColorIndex = 17 Then @@ -296,34 +296,34 @@ Partial Class General_RepIndicadorResumen End If End If Next - Dim top_vxp = From s In DtVxP.AsEnumerable().Take(10) Select New With {.Texto = s("Texto").ToString(), .Valor = s("Valor").ToString().ToDouble(), .Color = s("Color").ToString(), .Moneda = s("Moneda").ToString()} - Dim resto_vxp = From s In DtVxP.AsEnumerable().Skip(10) Select New With {.Texto = "Otros", .Valor = s("Valor").ToString().ToDouble(), .Color = s("Color").ToString(), .Moneda = s("Moneda").ToString()} + Dim top_vxp = From s In DtVxP.AsEnumerable().Take(10) Select New With {.Texto = s("Texto").ToString(), .Valor = s("Valor").ToString().ToDouble(), .Color = s("Color").ToString(), .Unidad = s("Unidad").ToString()} + Dim resto_vxp = From s In DtVxP.AsEnumerable().Skip(10) Select New With {.Texto = "Otros", .Valor = s("Valor").ToString().ToDouble(), .Color = s("Color").ToString(), .Unidad = s("Unidad").ToString()} Dim group_resto_vxp = resto_vxp.GroupBy(Function(x) x.Texto).[Select](Function(g) New With { .Texto = "Otros", .Valor = Math.Round(g.Sum(Function(x) x.Valor), 2), .Color = "#000000", - .Moneda = "MXN" + .Unidad = "MXN" }) Dim query_vxp = top_vxp.Union(group_resto_vxp) 'Dim query_vxp = top_vxp.Concat(From e In resto_vxp Group e By e.Texto Into gpo = Group) 'Dim group_resto_vxp = From e In resto_vxp Group e By e.Texto Into gpo = Group - 'Dim group_resto_vxp = resto_vxp.GroupBy(Function(e) New With {Key e.Texto, Key e.Valor, Key e.Color, Key e.Moneda}).ToList() + 'Dim group_resto_vxp = resto_vxp.GroupBy(Function(e) New With {Key e.Texto, Key e.Valor, Key e.Color, Key e.Unidad}).ToList() 'Compras x Producto TipoProveedor=1 Acreedores (Gastos) DtCxP.Reset() DtCxP.Columns.Add("Texto") DtCxP.Columns.Add("Valor") DtCxP.Columns.Add("Color") - DtCxP.Columns.Add("Moneda") + DtCxP.Columns.Add("Unidad") RowColorIndex = 0 For Each Dr As DataRow In GvComprasAcreed.DataSource.Rows If Dr("CveClasificacion").ToString <> "" Then Dim Row As DataRow = Nothing Row = DtCxP.NewRow() - Row("Texto") = Dr("Clasificacion").ToString ' $"{Dr("GPO").ToString} {GlobalDTMonedas().FiltraParametros($"CveMoneda = {Dr("CveMoneda").ToString}").Rows(0)("Abreviatura").ToString}" + Row("Texto") = Dr("Clasificacion").ToString Row("Valor") = Dr("SubTotal").ToString.FormatoNumero Row("Color") = DtColor.Rows(RowColorIndex)("Color").ToString - Row("Moneda") = Dr("Moneda").ToString + Row("Unidad") = Dr("Moneda").ToString DtCxP.Rows.Add(Row) RowColorIndex += 1 If RowColorIndex = 17 Then @@ -331,13 +331,13 @@ Partial Class General_RepIndicadorResumen End If End If Next - Dim top_cxp = From s In DtCxP.AsEnumerable().Take(10) Select New With {.Texto = s("Texto").ToString(), .Valor = s("Valor").ToString().ToDouble(), .Color = s("Color").ToString(), .Moneda = s("Moneda").ToString()} - Dim resto_cxp = From s In DtCxP.AsEnumerable().Skip(10) Select New With {.Texto = "Otros", .Valor = s("Valor").ToString().ToDouble(), .Color = s("Color").ToString(), .Moneda = s("Moneda").ToString()} + Dim top_cxp = From s In DtCxP.AsEnumerable().Take(10) Select New With {.Texto = s("Texto").ToString(), .Valor = s("Valor").ToString().ToDouble(), .Color = s("Color").ToString(), .Unidad = s("Unidad").ToString()} + Dim resto_cxp = From s In DtCxP.AsEnumerable().Skip(10) Select New With {.Texto = "Otros", .Valor = s("Valor").ToString().ToDouble(), .Color = s("Color").ToString(), .Unidad = s("Unidad").ToString()} Dim group_resto_cxp = resto_cxp.GroupBy(Function(x) x.Texto).[Select](Function(g) New With { .Texto = "Otros", .Valor = Math.Round(g.Sum(Function(x) x.Valor), 2), .Color = "#000000", - .Moneda = "MXN" + .Unidad = "MXN" }) Dim query_cxp = top_cxp.Union(group_resto_cxp) @@ -346,22 +346,30 @@ Partial Class General_RepIndicadorResumen DtCxP192.Columns.Add("Texto") DtCxP192.Columns.Add("Valor") DtCxP192.Columns.Add("Color") - DtCxP192.Columns.Add("Moneda") + DtCxP192.Columns.Add("Unidad") RowColorIndex = 0 For Each Dr As DataRow In GvCxP192.DataSource.Rows Dim Row As DataRow = Nothing Row = DtCxP192.NewRow() - Row("Texto") = $"{Dr("RazonSocial").ToString}" - Row("Valor") = Dr("SubTotal").ToString.FormatoNumero + Row("Texto") = Dr("RazonSocial").ToString + Row("Valor") = Dr("Cantidad").ToString.FormatoNumero Row("Color") = DtColor.Rows(RowColorIndex)("Color").ToString - 'Row("Moneda") = "MXN" + Row("Unidad") = "Kg" DtCxP192.Rows.Add(Row) RowColorIndex += 1 If RowColorIndex = 17 Then RowColorIndex = 0 End If Next - Dim query_cxp192 = From s In DtCxP192.AsEnumerable().Take(10) Select New With {.Texto = s("Texto").ToString(), .Valor = s("Valor").ToString().ToDouble(), .Color = s("Color").ToString(), .Moneda = s("Moneda").ToString()} + Dim top_cxp192 = From s In DtCxP192.AsEnumerable().Take(10) Select New With {.Texto = s("Texto").ToString(), .Valor = s("Valor").ToString().ToDouble(), .Color = s("Color").ToString(), .Unidad = s("Unidad").ToString()} + Dim resto_cxp192 = From s In DtCxP192.AsEnumerable().Skip(10) Select New With {.Texto = "Otros", .Valor = s("Valor").ToString().ToDouble(), .Color = s("Color").ToString(), .Unidad = s("Unidad").ToString()} + Dim group_resto_cxp192 = resto_cxp192.GroupBy(Function(x) x.Texto).[Select](Function(g) New With { + .Texto = "Otros", + .Valor = Math.Round(g.Sum(Function(x) x.Valor), 2), + .Color = "#000000", + .Unidad = "MXN" + }) + Dim query_cxp192 = top_cxp192.Union(group_resto_cxp192) 'Alert(Newtonsoft.Json.JsonConvert.SerializeObject(CCxC.Rows)) @@ -370,16 +378,16 @@ Partial Class General_RepIndicadorResumen DtCCxC.Columns.Add("Texto") DtCCxC.Columns.Add("Valor") DtCCxC.Columns.Add("Color") - DtCCxC.Columns.Add("Moneda") + DtCCxC.Columns.Add("Unidad") RowColorIndex = 0 For Each Dr As DataRow In GvCCxC.DataSource.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("Texto") = Dr("GPO").ToString Row("Valor") = Dr("Saldo").ToString.FormatoNumero Row("Color") = DtColor.Rows(RowColorIndex)("Color").ToString - Row("Moneda") = $"{GlobalDTMonedas().FiltraParametros($"CveMoneda = {Dr("CveMoneda").ToString}").Rows(0)("Abreviatura").ToString}" + Row("Unidad") = $"{GlobalDTMonedas().FiltraParametros($"CveMoneda = {Dr("CveMoneda").ToString}").Rows(0)("Abreviatura").ToString}" DtCCxC.Rows.Add(Row) RowColorIndex += 1 If RowColorIndex = 17 Then @@ -387,14 +395,22 @@ Partial Class General_RepIndicadorResumen End If End If Next - Dim query_ccxc = From s In DtCCxC.AsEnumerable().Take(20) Select New With {.Texto = s("Texto").ToString(), .Valor = s("Valor").ToString().ToDouble(), .Color = s("Color").ToString(), .Moneda = s("Moneda").ToString()} + Dim top_ccxc = From s In DtCCxC.AsEnumerable().Take(10) Select New With {.Texto = s("Texto").ToString(), .Valor = s("Valor").ToString().ToDouble(), .Color = s("Color").ToString(), .Unidad = s("Unidad").ToString()} + Dim resto_ccxc = From s In DtCCxC.AsEnumerable().Skip(10) Select New With {.Texto = "Otros", .Valor = s("Valor").ToString().ToDouble(), .Color = s("Color").ToString(), .Unidad = s("Unidad").ToString()} + Dim group_resto_ccxc = resto_ccxc.GroupBy(Function(x) x.Texto).[Select](Function(g) New With { + .Texto = "Otros", + .Valor = Math.Round(g.Sum(Function(x) x.Valor), 2), + .Color = "#000000", + .Unidad = "MXN" + }) + Dim query_ccxc = top_ccxc.Union(group_resto_ccxc) 'Cuentas por pagar x Proveedor DtCPxP.Reset() DtCPxP.Columns.Add("Texto") DtCPxP.Columns.Add("Valor") DtCPxP.Columns.Add("Color") - DtCPxP.Columns.Add("Moneda") + DtCPxP.Columns.Add("Unidad") RowColorIndex = 0 For Each Dr As DataRow In GvCPxP.DataSource.Rows If Not Dr("Orden").ToString = "" Then @@ -403,7 +419,7 @@ Partial Class General_RepIndicadorResumen 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") = $"{GlobalDTMonedas().FiltraParametros($"CveMoneda = {Dr("CveMoneda").ToString}").Rows(0)("Abreviatura").ToString}" + Row("Unidad") = $"{GlobalDTMonedas().FiltraParametros($"CveMoneda = {Dr("CveMoneda").ToString}").Rows(0)("Abreviatura").ToString}" DtCPxP.Rows.Add(Row) RowColorIndex += 1 If RowColorIndex = 17 Then @@ -411,7 +427,15 @@ Partial Class General_RepIndicadorResumen End If End If Next - Dim query_cpxp = From s In DtCPxP.AsEnumerable().Take(20) Select New With {.Texto = s("Texto").ToString(), .Valor = s("Valor").ToString().ToDouble(), .Color = s("Color").ToString(), .Moneda = s("Moneda").ToString()} + Dim top_cpxp = From s In DtCPxP.AsEnumerable().Take(10) Select New With {.Texto = s("Texto").ToString(), .Valor = s("Valor").ToString().ToDouble(), .Color = s("Color").ToString(), .Unidad = s("Unidad").ToString()} + Dim resto_cpxp = From s In DtCPxP.AsEnumerable().Skip(10) Select New With {.Texto = "Otros", .Valor = s("Valor").ToString().ToDouble(), .Color = s("Color").ToString(), .Unidad = s("Unidad").ToString()} + Dim group_resto_cpxp = resto_cpxp.GroupBy(Function(x) x.Texto).[Select](Function(g) New With { + .Texto = "Otros", + .Valor = Math.Round(g.Sum(Function(x) x.Valor), 2), + .Color = "#000000", + .Unidad = "MXN" + }) + Dim query_cpxp = top_cpxp.Union(group_resto_cpxp) 'TODO: Indicadores x Proveedor -- Determinar qué poner en la gráfica con E172