E172 Rep Indicador, CxC recuperado, links en encabezado tabla, grafica recuperado, normalizar moneda en MXN

This commit is contained in:
MLopez
2022-12-12 19:39:53 -07:00
parent bc1a168723
commit 71db745a93
2 changed files with 92 additions and 28 deletions

View File

@@ -353,8 +353,9 @@
CssClass="table table-striped table-advance table-hover ScrollAD Widthall " ShowHeader="True" EmptyDataText="No se encontraron resultados." ShowHeaderWhenEmpty="true" CssClass="table table-striped table-advance table-hover ScrollAD Widthall " ShowHeader="True" EmptyDataText="No se encontraron resultados." ShowHeaderWhenEmpty="true"
AutoGenerateColumns="False" AllowPaging="False" ShowFooter="False"> AutoGenerateColumns="False" AllowPaging="False" ShowFooter="False">
<Columns> <Columns>
<asp:BoundField DataField="Gpo" HeaderText="Cliente" /> <asp:BoundField DataField="RazonSocial" HeaderText="Cliente" />
<asp:BoundField DataFormatString="{0:c}" DataField="Saldo" ItemStyle-CssClass="margenbound" HeaderText="Saldo" /> <asp:BoundField DataFormatString="{0:c}" DataField="Saldo" ItemStyle-CssClass="margenbound" HeaderText="Saldo" />
<asp:BoundField DataFormatString="{0:c}" DataField="Recuperado" ItemStyle-CssClass="margenbound" HeaderText="Recuperado" />
</Columns> </Columns>
</asp:GridView> </asp:GridView>
</div> </div>
@@ -368,7 +369,7 @@
<div class="portlet-title"> <div class="portlet-title">
<div class="caption font-green"> <div class="caption font-green">
<i class="icon-pin font-green"></i> <i class="icon-pin font-green"></i>
<span id="Span5" runat="server" class="caption-subject bold uppercase">Cuentas por cobrar - Gráfica </span> <span id="Span5" runat="server" class="caption-subject bold uppercase">Cuentas por cobrar - Gráfica Saldo(MXN)</span>
</div> </div>
<div class="actions"> <div class="actions">
<div class="btn-group"> <div class="btn-group">
@@ -384,8 +385,32 @@
</ContentTemplate> </ContentTemplate>
</asp:UpdatePanel> </asp:UpdatePanel>
</div> </div>
<div class="col-md-6">
<asp:UpdatePanel ID="UPGraficaCxCRec" runat="server" class="portlet light xspadding bordered " align="center" style="" UpdateMode="Conditional" Visible="false">
<ContentTemplate>
<div class="portlet-title">
<div class="caption font-green">
<i class="icon-pin font-green"></i>
<span id="Span10" runat="server" class="caption-subject bold uppercase">Cuentas por cobrar - Gráfica Recuperado</span>
</div>
<div class="actions">
<div class="btn-group">
</div>
</div>
<div class="tools">
<a href="javascript:;" class="collapse"></a>
</div>
</div>
<div class="portlet-body formnombottom">
<div id="chartdiv_cxcrec"></div>
</div>
</ContentTemplate>
</asp:UpdatePanel>
</div>
</div> </div>
</ContentTemplate> </ContentTemplate>
<Triggers> <Triggers>
<asp:AsyncPostBackTrigger ControlID="btnConsultar" EventName="Click" /> <asp:AsyncPostBackTrigger ControlID="btnConsultar" EventName="Click" />
@@ -448,10 +473,10 @@
tooltip: { tooltip: {
formatter: function (tooltip) { formatter: function (tooltip) {
var tooltiptext = tooltip.defaultFormatter.call(this, tooltip); var tooltiptext = tooltip.defaultFormatter.call(this, tooltip);
var isCurrency = /^(\d|-)?(\d|,)*\.?\d*$/.test(/<b>(.*?)<\/b>/.exec(tooltiptext)); //var isCurrency = /^(\d|-)?(\d|,)*\.?\d*$/.test(/<b>(.*?)<\/b>/.exec(tooltiptext));
if (isCurrency) { //if (isCurrency) {
tooltiptext = tooltiptext.replace("<b>", "<b>$"); // tooltiptext = tooltiptext.replace("<b>", "<b>$");
} //}
tooltiptext = tooltiptext.replace("</b>", " " + this.point.unit + "</b>"); tooltiptext = tooltiptext.replace("</b>", " " + this.point.unit + "</b>");
console.log(tooltiptext) console.log(tooltiptext)
return tooltiptext return tooltiptext
@@ -496,8 +521,7 @@
$('#' + "chartdiv_cxp192").highcharts({ ...chartconfig, series: [{ ...chartconfig.series[0], type: 'pie', data: customAccessor(json["CxP192"]) }] }) $('#' + "chartdiv_cxp192").highcharts({ ...chartconfig, series: [{ ...chartconfig.series[0], type: 'pie', data: customAccessor(json["CxP192"]) }] })
$('#' + "chartdiv_cxp").highcharts({ ...chartconfig, series: [{ ...chartconfig.series[0], data: customAccessor(json["CxP"]) }] }) $('#' + "chartdiv_cxp").highcharts({ ...chartconfig, series: [{ ...chartconfig.series[0], data: customAccessor(json["CxP"]) }] })
$('#' + "chartdiv_cxpa").highcharts({ ...chartconfig, series: [{ ...chartconfig.series[0], data: customAccessor(json["CxPA"]) }] }) $('#' + "chartdiv_cxpa").highcharts({ ...chartconfig, series: [{ ...chartconfig.series[0], data: customAccessor(json["CxPA"]) }] })
$('#' + "chartdiv_cxc").highcharts({ ...chartconfig, series: [{ ...chartconfig.series[0], data: customAccessor(json["CxC"]) }] }) $('#' + "chartdiv_cxc").highcharts({ ...chartconfig, series: [{ ...chartconfig.series[0], data: customAccessor(json["CxC"]) }, { type: 'line', keys: ['name', 'y', 'ignore', 'unit'], data: customAccessor(json["CxCR"]) }] })
//AmCharts.makeChart("chartdiv_cxp192", { ...chartconfig, dataProvider: json["CxP192"] }); // Compras x Producto ProveedorClasificacion 192 //AmCharts.makeChart("chartdiv_cxp192", { ...chartconfig, dataProvider: json["CxP192"] }); // Compras x Producto ProveedorClasificacion 192
//AmCharts.makeChart("chartdiv_cxc", { ...chartconfig, dataProvider: json["CxC"] }); // Cuentas por Cobrar x Cliente //AmCharts.makeChart("chartdiv_cxc", { ...chartconfig, dataProvider: json["CxC"] }); // Cuentas por Cobrar x Cliente

View File

@@ -83,11 +83,11 @@ Partial Class General_RepIndicadorResumen
Dim FechaCorte As String = $"31/12/{Now.Year}" 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, '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 ' "-1", "-1", "-1", FechaCorte:=FechaCorte.ToDate, CveUsuarioConsulta:=UsuarioActual.CveUsuario) Then
ObjMovtos.DtResultados.DefaultView.Sort = "CveMoneda,Saldo DESC" ' ObjMovtos.DtResultados.DefaultView.Sort = "CveMoneda,Saldo DESC"
GvCxC.DataSource = ObjMovtos.DtResultados.DefaultView.ToTable ' GvCxC.DataSource = ObjMovtos.DtResultados.DefaultView.ToTable
End If 'End If
'If ObjMovtos.GetCxP(MinFecha, TxtFechaF.Text, -1, DdlSubProyecto.SelectedValue.ToEntero, -1, -1, -1, -1, -1, UsuarioActual.CveEmpresa, 5, -1, 1, 'If ObjMovtos.GetCxP(MinFecha, TxtFechaF.Text, -1, DdlSubProyecto.SelectedValue.ToEntero, -1, -1, -1, -1, -1, UsuarioActual.CveEmpresa, 5, -1, 1,
' FechaCorte:=FechaCorte.ToDate, CveUsuarioConsulta:=UsuarioActual.CveUsuario) Then ' FechaCorte:=FechaCorte.ToDate, CveUsuarioConsulta:=UsuarioActual.CveUsuario) Then
@@ -105,6 +105,9 @@ Partial Class General_RepIndicadorResumen
'Gastos (Compras acreedores) 'Gastos (Compras acreedores)
ObjCitrus.DTSetResultados.Tables(2).DefaultView.Sort = "Moneda,SubTotal DESC" ObjCitrus.DTSetResultados.Tables(2).DefaultView.Sort = "Moneda,SubTotal DESC"
GvComprasAcreed.DataSource = ObjCitrus.DTSetResultados.Tables(2).DefaultView.ToTable GvComprasAcreed.DataSource = ObjCitrus.DTSetResultados.Tables(2).DefaultView.ToTable
'Cuentas x Cobrar
ObjCitrus.DTSetResultados.Tables(3).DefaultView.Sort = "SaldoMN DESC"
GvCxC.DataSource = ObjCitrus.DTSetResultados.Tables(3).DefaultView.ToTable
End If End If
ObjVentas.Dispose() ObjVentas.Dispose()
@@ -119,6 +122,7 @@ Partial Class General_RepIndicadorResumen
GvCxC.DataBind() GvCxC.DataBind()
If GvCxC.DataSource IsNot Nothing Then If GvCxC.DataSource IsNot Nothing Then
GvCxC.HeaderRow.Cells(1).Text = "<a href=""/CxC/RepCxC.aspx"" target=""_blank"">Saldo</a>" GvCxC.HeaderRow.Cells(1).Text = "<a href=""/CxC/RepCxC.aspx"" target=""_blank"">Saldo</a>"
GvCxC.HeaderRow.Cells(2).Text = "<a href=""/Ventas/RepRecuperacion.aspx"" target=""_blank"">Recuperado</a>"
End If End If
'Mostrar gráficos solo si hay datos en su respectiva tabla 'Mostrar gráficos solo si hay datos en su respectiva tabla
@@ -139,8 +143,10 @@ Partial Class General_RepIndicadorResumen
End If End If
If GvCxC.Rows.Count > 0 Then If GvCxC.Rows.Count > 0 Then
UPGraficaCxC.Visible = True UPGraficaCxC.Visible = True
'UPGraficaCxCRec.Visible = True
Else Else
UPGraficaCxC.Visible = False UPGraficaCxC.Visible = False
'UPGraficaCxCRec.Visible = False
End If End If
If GvCxP.Rows.Count > 0 Then If GvCxP.Rows.Count > 0 Then
UPGraficaCxP.Visible = True UPGraficaCxP.Visible = True
@@ -155,7 +161,7 @@ Partial Class General_RepIndicadorResumen
'Si no había datos en ninguna tabla no cargar función de gráficos 'Si no había datos en ninguna tabla no cargar función de gráficos
If (GvVxP.Rows.Count = 0 AndAlso GvComprasAcreed.Rows.Count = 0 AndAlso GvCxP192.Rows.Count = 0 AndAlso GvCxC.Rows.Count = 0 AndAlso GvCxP.Rows.Count = 0) Then Exit Sub If (GvVxP.Rows.Count = 0 AndAlso GvComprasAcreed.Rows.Count = 0 AndAlso GvCxP192.Rows.Count = 0 AndAlso GvCxC.Rows.Count = 0 AndAlso GvCxP.Rows.Count = 0) Then Exit Sub
GraficasPastel() Graficas()
'GraficasBarras() 'GraficasBarras()
End Sub End Sub
Protected Sub GvVxP_RowDataBound(sender As Object, e As System.Web.UI.WebControls.GridViewRowEventArgs) Handles GvVxP.RowDataBound Protected Sub GvVxP_RowDataBound(sender As Object, e As System.Web.UI.WebControls.GridViewRowEventArgs) Handles GvVxP.RowDataBound
@@ -191,13 +197,14 @@ Partial Class General_RepIndicadorResumen
End If End If
End If End If
End Sub End Sub
Protected Sub GvCCxC_RowDataBound(sender As Object, e As System.Web.UI.WebControls.GridViewRowEventArgs) Handles GvCxC.RowDataBound Protected Sub GvCxC_RowDataBound(sender As Object, e As System.Web.UI.WebControls.GridViewRowEventArgs) Handles GvCxC.RowDataBound
If e.Row.RowType = DataControlRowType.DataRow Then If e.Row.RowType = DataControlRowType.DataRow Then
If e.Row.DBCampo("Orden") = "" Then If e.Row.DBCampo("CveCliente") = "" Then
e.Row.CssClass = "Totales" e.Row.CssClass = "Totales"
' End If
' 'TODO: Sería mejor usar la Abreviatura de la tabla, pero habría que extender PA_Comp_RepCxP para incluir la columna Abreviatura
e.Row.Cells(0).Text = $"Total {GlobalDTMonedas().FiltraParametros($"CveMoneda = {e.Row.DBCampo("CveMoneda").ToString}").Rows(0)("Moneda").ToString}"
End If End If
'TODO: Sería mejor usar la Abreviatura de la tabla, pero habría que extender PA_Comp_RepCxP para incluir la columna Abreviatura
' e.Row.Cells(2).Text = $"{GlobalDTMonedas().FiltraParametros($"CveMoneda = {e.Row.DBCampo("CveMoneda").ToString}").Rows(0)("Abreviatura").ToString}"
End If End If
End Sub End Sub
Private Sub CreaDataTableColor() Private Sub CreaDataTableColor()
@@ -273,9 +280,9 @@ Partial Class General_RepIndicadorResumen
DtColor.Rows.Add(RowColor) DtColor.Rows.Add(RowColor)
End Sub End Sub
Private Sub GraficasPastel() Private Sub Graficas()
Dim DtVxP, DtCxP192, DtCxP, DtCxPA, DtCxC As New DataTable Dim DtVxP, DtCxP192, DtCxP, DtCxPA, DtCxC, DtCxCR As New DataTable
Dim RowColorIndex As Integer = 0 Dim RowColorIndex As Integer = 0
'Ventas x Producto 'Ventas x Producto
@@ -412,7 +419,7 @@ Partial Class General_RepIndicadorResumen
}) })
Dim query_cxpa = top_cxpa.Union(group_resto_cxpa) Dim query_cxpa = top_cxpa.Union(group_resto_cxpa)
'Cuentas por cobrar x Cliente 'Cuentas por cobrar x Cliente -- Saldo
DtCxC.Reset() DtCxC.Reset()
DtCxC.Columns.Add("Texto") DtCxC.Columns.Add("Texto")
DtCxC.Columns.Add("Valor") DtCxC.Columns.Add("Valor")
@@ -420,13 +427,13 @@ Partial Class General_RepIndicadorResumen
DtCxC.Columns.Add("Unidad") DtCxC.Columns.Add("Unidad")
RowColorIndex = 0 RowColorIndex = 0
For Each Dr As DataRow In GvCxC.DataSource.Rows For Each Dr As DataRow In GvCxC.DataSource.Rows
If Not Dr("Orden").ToString = "" Then If Not Dr("CveCliente").ToString = "" Then
Dim Row As DataRow = Nothing Dim Row As DataRow = Nothing
Row = DtCxC.NewRow() Row = DtCxC.NewRow()
Row("Texto") = Dr("GPO").ToString Row("Texto") = Dr("RazonSocial").ToString
Row("Valor") = Dr("Saldo").ToString.FormatoNumero Row("Valor") = Dr("SaldoMN").ToString.FormatoNumero
Row("Color") = DtColor.Rows(RowColorIndex)("Color").ToString Row("Color") = DtColor.Rows(RowColorIndex)("Color").ToString
Row("Unidad") = $"{GlobalDTMonedas().FiltraParametros($"CveMoneda = {Dr("CveMoneda").ToString}").Rows(0)("Abreviatura").ToString}" Row("Unidad") = "MXN" '$"{GlobalDTMonedas().FiltraParametros($"CveMoneda = {Dr("CveMoneda").ToString}").Rows(0)("Abreviatura").ToString}"
DtCxC.Rows.Add(Row) DtCxC.Rows.Add(Row)
RowColorIndex += 1 RowColorIndex += 1
If RowColorIndex = 17 Then If RowColorIndex = 17 Then
@@ -443,12 +450,45 @@ Partial Class General_RepIndicadorResumen
.Unidad = "MXN" .Unidad = "MXN"
}) })
Dim query_cxc = top_cxc.Union(group_resto_cxc) Dim query_cxc = top_cxc.Union(group_resto_cxc)
'Cuentas por cobrar x Cliente -- Recuperado
DtCxCR.Reset()
DtCxCR.Columns.Add("Texto")
DtCxCR.Columns.Add("Valor")
DtCxCR.Columns.Add("Color")
DtCxCR.Columns.Add("Unidad")
RowColorIndex = 0
For Each Dr As DataRow In GvCxC.DataSource.Rows
If Not Dr("CveCliente").ToString = "" Then
Dim Row As DataRow = Nothing
Row = DtCxCR.NewRow()
Row("Texto") = Dr("RazonSocial").ToString
Row("Valor") = Dr("RecuperadoMN").ToString.FormatoNumero
Row("Color") = DtColor.Rows(RowColorIndex)("Color").ToString
Row("Unidad") = "MXN" '$"{GlobalDTMonedas().FiltraParametros($"CveMoneda = {Dr("CveMoneda").ToString}").Rows(0)("Abreviatura").ToString}"
DtCxCR.Rows.Add(Row)
RowColorIndex += 1
If RowColorIndex = 17 Then
RowColorIndex = 0
End If
End If
Next
Dim top_cxcr = From s In DtCxCR.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_cxcr = From s In DtCxCR.AsEnumerable().Skip(10) Select New With {.Texto = "Otros", .Valor = s("Valor").ToString().ToDouble(), .Color = s("Color").ToString(), .Unidad = s("Unidad").ToString()}
Dim group_resto_cxcr = resto_cxcr.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_cxcr = top_cxcr.Union(group_resto_cxcr)
'Alert(Newtonsoft.Json.JsonConvert.SerializeObject(CxC.Rows)) 'Alert(Newtonsoft.Json.JsonConvert.SerializeObject(CxC.Rows))
'TODO: Indicadores x Proveedor -- Determinar qué poner en la gráfica con E172 'TODO: Indicadores x Proveedor -- Determinar qué poner en la gráfica con E172
'Serializar datos agrupándolos por su respectivo DataTable, todos en un solo JSON 'Serializar datos agrupándolos por su respectivo DataTable, todos en un solo JSON
Dim json As String = Newtonsoft.Json.JsonConvert.SerializeObject(New With {.VxP = query_vxp, .CxP192 = query_cxp192, .CxP = query_cxp, .CxPA = query_cxpa, .CxC = query_cxc}) Dim json As String = Newtonsoft.Json.JsonConvert.SerializeObject(New With {.VxP = query_vxp, .CxP192 = query_cxp192, .CxP = query_cxp, .CxPA = query_cxpa, .CxC = query_cxc, .CxCR = query_cxcr})
'Dim json As String = Newtonsoft.Json.JsonConvert.SerializeObject(New With {.VxP = query_vxp, .CxC = New String() {}}) 'Dim json As String = Newtonsoft.Json.JsonConvert.SerializeObject(New With {.VxP = query_vxp, .CxC = New String() {}})
'Alert(json) 'Alert(json)
RegistraScript($"CargaGraficas({json})", "sdkp24223") RegistraScript($"CargaGraficas({json})", "sdkp24223")