Files
SIG/Ventas/RepVentasUtilidadPadre.aspx.vb
2019-08-15 11:41:47 -07:00

250 lines
11 KiB
VB.net

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.CveEmpresa = 119 Then
DdlClientesWS.setEsWebService(True)
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 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
LblNeto.Text = "0"
LblPorNeto.Text = "0"
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, DdlClasificacion.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
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')")
Dim Dt As New DataTable()
Dt.Columns.Add("gpo")
Dt.Columns.Add("utilidad")
Dt.Columns.Add("perdida")
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("utilidad") = Dr("Utilidad").ToString.FormatoNumero
Row("perdida") = Dr("Perdida").ToString.FormatoNumero
Dt.Rows.Add(Row)
End If
Next
Dim query = From s In Dt.AsEnumerable() Select New With {.gpo = s("gpo").ToString(), .utilidad = s("utilidad").ToString().ToDouble(), .perdida = s("perdida").ToString().ToDouble}
Dim json As String = Newtonsoft.Json.JsonConvert.SerializeObject(query)
RegistraScript($"CargaGraficaCompracion({json})", "22")
UPModalProd.Update()
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}",
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.Cells(0).Text = "<a class=""" & Css & """ href=""" & Liga & """>" & e.Row.Cells(0).Text & "</a>"
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("<b>Agrupado por</b>: {0}", DdlGrupo.SelectedItem.Text)
If txtFechaI.Text <> "" Then StrFiltro.AppendFormat("&emsp;<b>Fecha Inicio </b>: {0}", txtFechaI.Text.ToDate.ToShortDateString)
If txtFechaF.Text <> "" Then StrFiltro.AppendFormat("&emsp;<b>Fecha Fin </b>: {0}", txtFechaF.Text.ToDate.ToShortDateString)
If DdlSubProyecto.GetSelectedText <> "" Then StrFiltro.AppendFormat("&emsp;<b>SubProyecto</b>: {0}", DdlSubProyecto.GetSelectedText)
If DdlClientesWS.SelectedValue <> "-1" Then StrFiltro.AppendFormat("&emsp;<b>Cliente</b>: {0}", DdlClientesWS.SelectedText)
If DdlPS.SelectedValue <> "-1" Then StrFiltro.AppendFormat("&emsp;<b>P.S.</b>: {0}", DdlPS.SelectedText)
If DdlClasificacion.SelectedValue <> "-1" Then StrFiltro.AppendFormat("&emsp;<b>Clasificación</b>: {0}", DdlClasificacion.SelectedItem.Text)
If DdlClientesWS.SelectedValue <> "-1" Then StrFiltro.AppendFormat("&emsp;<b>Cliente</b>: {0}", DdlClientesWS.SelectedText)
If DdlVendedor.GetSelectedText <> "" Then StrFiltro.AppendFormat("&emsp;<b>Vendedor</b>: {0}", DdlVendedor.GetSelectedText)
Dim params As List(Of ReportParameter) = New List(Of ReportParameter)()
Dim Imagen As System.IO.FileInfo = 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)
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}%"))
If Imagen.Exists Then
params.Add(New ReportParameter("LogoPath", logouri))
Else
params.Add(New ReportParameter("LogoPath", ""))
End If
ImprimirPDF("Empresas/Grales/Formatos/RepVentasUtilidadPadre.rdlc", DtDatos, params, "Reporte de Utilidad o Pérdida sobre Ventas", Formato)
End Sub
#End Region
End Class