Option Explicit On Option Strict On Imports System.Data Imports System.Drawing Imports Extensiones Imports Microsoft.Reporting.WebForms Partial Class Ventas_RepVentasUtilidadPadre 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 Agrupador As String Get Return ViewState("Agrupador").ToString End Get Set(value As String) ViewState("Agrupador") = 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 CargaCombos() End If End Sub #Region " INICIALIZA VALORES " Private Sub CargaCombos() txtFechaI.Text = Now.FirstDayOfMonth.ToShortDateString txtFechaF.Text = Now.LastDayOfMonth.ToShortDateString 'Carga Clientes If UsuarioActual.Empresa.Funcionalidad(105) = "1" Or UsuarioActual.Empresa.Funcionalidad(141) = "1" Then DdlClientesWS.setEsWebService(True) DdlClientesWS.SelectedValue = "-1" DdlClientesWS.SelectedText = "Todos" Else DdlClientesWS.setEsWebService(False) DdlClientesWS.DataSource = GlobalDTCliente(UsuarioActual.CveEmpresa, -1) DdlClientesWS.DataBind() DdlClientesWS.ddl.Items.Insert(0, New ListItem("Todos", "-1")) End If 'CargaSubProyectos DdlSubProyecto.DataSource = GlobalDTSubProyectos(-1, CveEmpresa:=UsuarioActual.CveEmpresa) DdlSubProyecto.DataBind() 'Carga Vendedor DdlVendedor.DataSource = GlobalDTVendedores(UsuarioActual.CveEmpresa) DdlVendedor.DataBind() If UsuarioActual.CveVendedor > 0 AndAlso Not UsuarioActual.TienePermisoProceso(263) Then DdlVendedor.SelectedValuesIfExistM(UsuarioActual.CveVendedor.ToString()) DdlVendedor.Attributes.Add("disabled", "disabled") DdlVendedor.Enabled = False End If 'Cargo categorias DdlCategoria.DataSource = GlobalDTGralCategorias(UsuarioActual.CveEmpresa) DdlCategoria.DataBind() DdlCategoria.Items.Insert(0, New ListItem("Todas", "-1")) 'Cargo Clasificaciones DdlClasificacion.DataSource = GlobalDTClasificaciones(UsuarioActual.CveEmpresa) DdlClasificacion.DataBind() 'Carga Productos DdlPS.setEsWebService(UsuarioActual.Empresa.Funcionalidad(105) = "1") If UsuarioActual.Empresa.Funcionalidad(105) = "1" Then DdlPS.ddlWS.Attributes.Add("data-cveclasificacion", DdlClasificacion.SelectedValue) DdlPS.SelectedText = "Todos" DdlPS.SelectedValue = "-1" Else DdlPS.ddl.Items.Clear() DdlPS.ddl.DataSource = GlobalDTPSSimplificado(UsuarioActual.CveEmpresa) DdlPS.ddl.DataBind() DdlPS.ddl.Items.Insert(0, New ListItem("Todos", "-1")) End If 'garantia If UsuarioActual.Empresa.Funcionalidad(531) = "1" Then divgarantia1.visible = True divgarantia2.visible = True End If DdlMarcas.DataSource = GlobalDTGralMarcas(UsuarioActual.CveEmpresa) DdlMarcas.DataBind() DdlMarcas.Items.Insert(0, New ListItem("Todas", "-1")) LblNeto.Text = "0" LblPorNeto.Text = "0" End Sub Protected Sub DdlCategoria_SelectedIndexChanged(sender As Object, e As EventArgs) DdlClasificacion.DataSource = GlobalDTClasificaciones(UsuarioActual.CveEmpresa, CveCategoria:=DdlCategoria.SelectedValue.ToEntero) DdlClasificacion.DataBind() DdlClasificacion.Items.Insert(0, New ListItem("Todas", "-1")) End Sub Protected Sub DdlClasificacion_SelectedIndexChanged(sender As Object, e As EventArgs) If DdlPS.UsaWebService Then DdlPS.ddlWS.Attributes.Add("data-cveclasificacion", DdlClasificacion.SelectedValue) DdlPS.SelectedText = "Todos" DdlPS.SelectedValue = "-1" Else DdlPS.ddl.Items.Clear() DdlPS.ddl.DataSource = GlobalDTPSSimplificado(UsuarioActual.CveEmpresa, DdlClasificacion.SelectedValue.ToEntero()) DdlPS.ddl.DataBind() DdlPS.ddl.Items.Insert(0, New ListItem("Todos", "-1")) End If End Sub #End Region #Region "CONSULTA" Private Sub CargaDatos() Dim ObjVentas As New ClsVentas If ObjVentas.GetReportePadreVentasUtilidad(If(DdlVendedor.GetSelectedValuesM = "", "-1", DdlVendedor.GetSelectedValuesM), DdlClientesWS.SelectedValue.ToEntero, If(DdlSubProyecto.GetSelectedValuesM = "", "-1", DdlSubProyecto.GetSelectedValuesM), txtFechaI.Text.ToDate, txtFechaF.Text.ToDate, UsuarioActual.CveEmpresa, DdlGrupo.SelectedValue.ToEntero, DdlPS.SelectedValue.ToEntero, DdlCategoria.SelectedValue.ToEntero, DdlClasificacion.SelectedValue.ToEntero, DdlMarcas.SelectedValue.ToEntero, DdlGarantia.SelectedValue.ToEntero) Then GvDatos.DataSource = ObjVentas.DtResultados DtDatos = ObjVentas.DtResultados End If If DtDatos.Rows.Count > 0 Then Dim Utilidad As Double = DtDatos.Rows(0)("Utilidad").ToString.ToDouble Dim Perdida As Double = DtDatos.Rows(0)("Perdida").ToString.ToDouble Dim Costo As Double = DtDatos.Rows(0)("Costo").ToString.ToDouble Dim Neto As Double = Utilidad - Perdida Dim PorNeto As Double = (Utilidad - Perdida) / If(Costo = 0, 1, Costo) * 100 If Neto >= 0 Then LblNombreNeto.Text = "Utilidad" DivClaseNeto.Attributes.Add("class", "dashboard-stat dashboard-stat-v2 green") LblNetoIndicador.Attributes.Add("data-original-title", "Utilidad") LblNeto.Text = Neto.ToString("N2") LblPorNeto.Text = PorNeto.ToString("N2") Else If Neto < 0 Then Neto = (Neto * (-1)) End If LblNombreNeto.Text = "Pérdida" DivClaseNeto.Attributes.Add("class", "dashboard-stat dashboard-stat-v2 red") LblNetoIndicador.Attributes.Add("data-original-title", "Pérdida") LblNeto.Text = Neto.ToString("N2") LblPorNeto.Text = PorNeto.ToString("N2") End If LblNombreRentabilidad.Text = "Rentabilidad" DivClaseRentabilidad.Attributes.Add("class", "dashboard-stat dashboard-stat-v2 green") LblRentabilidadIndicador.Attributes.Add("data-original-title", "Rentabilidad") LblRentabilidad.Text = DtDatos.Rows(0)("Rentabilidad").ToString.ToDouble.ToString("N2") End If ObjVentas.Dispose() GvDatos.DataBind() UpDatos.Update() UpIndicador.Update() Agrupador = DdlGrupo.SelectedItem.Text End Sub Protected Sub BtnConsultar_Click(sender As Object, e As EventArgs) CargaDatos() 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')") CargaGrafica() End Sub Private Sub CargaGrafica() If DdlVer.SelectedValue.ToEntero = 1 Then Dim Dt As New DataTable() Dt.Columns.Add("gpo") Dt.Columns.Add("neto") For Each Dr As DataRow In DtDatos.Rows If Dr("GPO").ToString <> "" Then Dim Row As DataRow = Nothing Row = Dt.NewRow() Row("gpo") = Dr("GPO").ToString Row("neto") = Dr("Neto").ToString.FormatoNumero Dt.Rows.Add(Row) End If Next Dim query = From s In Dt.AsEnumerable() Select New With {.gpo = s("gpo").ToString(), .neto = s("neto").ToString().ToDouble()} Dim json As String = Newtonsoft.Json.JsonConvert.SerializeObject(query) RegistraScript($"CargaGraficaBarrasNeto({json})", "22") ElseIf DdlVer.SelectedValue.ToEntero = 2 Then Dim Dt2 As New DataTable() Dt2.Columns.Add("gpo") Dt2.Columns.Add("rentabilidad") For Each Dr As DataRow In DtDatos.Rows If Dr("GPO").ToString <> "" Then Dim Row As DataRow = Nothing Row = Dt2.NewRow() Row("gpo") = Dr("GPO").ToString Row("rentabilidad") = Dr("Rentabilidad").ToString.FormatoNumero Dt2.Rows.Add(Row) End If Next Dim query2 = From s In Dt2.AsEnumerable() Select New With {.gpo = s("gpo").ToString(), .rentabilidad = s("rentabilidad").ToString().ToDouble()} Dim json2 As String = Newtonsoft.Json.JsonConvert.SerializeObject(query2) RegistraScript($"CargaGraficaBarrasRentabilidad({json2})", "23") End If UPModalProd.Update() End Sub Protected Sub DdlVer_SelectedIndexChanged(sender As Object, e As EventArgs) CargaGrafica() End Sub #End Region #Region "GRIDVIEW" Protected Sub GvDatos_RowDataBound(sender As Object, e As GridViewRowEventArgs) If e.Row.RowType = DataControlRowType.DataRow Then If e.Row.DBCampo("GPO") = "" Then e.Row.CssClass = "Totales" e.Row.Cells(0).Text = "Total" Dim Css As String = "Texto" Dim Liga As String = String.Format("/Ventas/RepVentasUtilidad.aspx?FechaI={0}&FechaF={1}&CveSubProyecto={2}&CveCliente={3}&CveVendedor={4}&Gpo={5}&CveGpo={6}&CvePS={7}&CveClasificacion={8}&CveMarca={9}", e.Row.DBCampo("FechaI"), e.Row.DBCampo("FechaF"), e.Row.DBCampo("CveSubProyecto"), e.Row.DBCampo("CveCliente"), e.Row.DBCampo("CveVendedor"), e.Row.DBCampo("Grupo"), e.Row.DBCampo("GPO"), e.Row.DBCampo("CvePS"), e.Row.DBCampo("CveClasificacion"), e.Row.DBCampo("CveMarca")) e.Row.Cells(0).Text = String.Format("{2}", Css, Liga, e.Row.Cells(0).Text) Else e.Row.Cells(9).BackColor = Drawing.Color.LightGray End If End If End Sub #End Region #Region "IMPRESIONES" Protected Sub LnkPDF_Click(sender As Object, e As EventArgs) GeneraPDF("PDF") End Sub Protected Sub LnkExcel_Click(sender As Object, e As EventArgs) GeneraPDF("EXCEL") End Sub Protected Sub GeneraPDF(Formato As String) Dim StrFiltro As New StringBuilder StrFiltro.AppendFormat("Agrupado por: {0}", DdlGrupo.SelectedItem.Text) If txtFechaI.Text <> "" Then StrFiltro.AppendFormat(" Fecha Inicio : {0}", txtFechaI.Text.ToDate.ToShortDateString) If txtFechaF.Text <> "" Then StrFiltro.AppendFormat(" Fecha Fin : {0}", txtFechaF.Text.ToDate.ToShortDateString) If DdlSubProyecto.GetSelectedText <> "" Then StrFiltro.AppendFormat(" SubProyecto: {0}", DdlSubProyecto.GetSelectedText) If DdlClientesWS.SelectedValue <> "-1" Then StrFiltro.AppendFormat(" Cliente: {0}", DdlClientesWS.SelectedText) If DdlPS.SelectedValue <> "-1" Then StrFiltro.AppendFormat(" P.S.: {0}", DdlPS.SelectedText) If DdlClasificacion.SelectedValue <> "-1" Then StrFiltro.AppendFormat(" Clasificación: {0}", DdlClasificacion.SelectedItem.Text) If DdlClientesWS.SelectedValue <> "-1" Then StrFiltro.AppendFormat(" Cliente: {0}", DdlClientesWS.SelectedText) If DdlVendedor.GetSelectedText <> "" Then StrFiltro.AppendFormat(" Vendedor: {0}", DdlVendedor.GetSelectedText) If DdlMarcas.SelectedValue <> "-1" Then StrFiltro.AppendFormat(" Marcas: {0}", DdlMarcas.SelectedItem.Text) Dim Imagen As New System.IO.FileInfo(String.Format("{0}/Logo.png", UsuarioActual.Empresa.Ruta)) 'Dim logouri = String.Format("{0}://{1}:{2}/Empresas/{3}/Logo.png", Request.Url.Scheme, Request.Url.Host, Request.Url.Port, UsuarioActual.CveEmpresa) Dim params As New List(Of ReportParameter)() params.Add(New ReportParameter("NombreEmpresa", UsuarioActual.Empresa.Empresa)) params.Add(New ReportParameter("UsuarioImprimio", UsuarioActual.Nombre)) params.Add(New ReportParameter("FechaImpresion", DateTime.Now.ToString())) params.Add(New ReportParameter("Filtros", StrFiltro.ToString)) params.Add(New ReportParameter("Neto", LblNeto.Text)) params.Add(New ReportParameter("PorNeto", $"{LblPorNeto.Text}%")) params.Add(New ReportParameter("Rentabilidad", $"{LblRentabilidad.Text}%")) params.Add(New ReportParameter("LogoPath", If(Imagen.Exists, $"file://{Imagen.FullName}", ""))) ImprimirPDF("Empresas/Grales/Formatos/RepVentasUtilidadPadre.rdlc", DtDatos, params, "Reporte de Utilidad o Pérdida sobre Ventas", Formato) End Sub #End Region End Class