381 lines
16 KiB
VB.net
381 lines
16 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
|
|
If UsuarioActual.Empresa.Funcionalidad(382) = "1" Then
|
|
LnkModalPorcentajes.Visible = True
|
|
End If
|
|
|
|
CargaCombos()
|
|
End If
|
|
End Sub
|
|
|
|
|
|
Private Property SubProyectoConf As String
|
|
Get
|
|
If ViewState("SubProyectoConf") Is Nothing Then
|
|
ViewState("SubProyectoConf") = ""
|
|
End If
|
|
Return ViewState("SubProyectoConf").ToString
|
|
End Get
|
|
|
|
Set(value As String)
|
|
ViewState("SubProyectoConf") = value
|
|
End Set
|
|
End Property
|
|
|
|
|
|
|
|
|
|
#Region " INICIALIZA VALORES "
|
|
Private Sub CargaCombos()
|
|
|
|
TxtModalFechaInicio.Text = NowADS().FirstDayOfMonth.ToShortDateString
|
|
TxtModalFechaFin.Text = NowADS().LastDayOfMonth.ToShortDateString
|
|
|
|
txtFechaI.Text = NowADS().FirstDayOfMonth.ToShortDateString
|
|
txtFechaF.Text = NowADS().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(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"
|
|
|
|
|
|
Dim LblSubProyectoConf As New Label
|
|
CargarCentrosDeCosto(Nothing, Nothing, Nothing, LblSubProyectoConf)
|
|
SubProyectoConf = LblSubProyectoConf.Text
|
|
|
|
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, DdlFilial.SelectedValue.ToEntero) Then
|
|
GvDatos.DataSource = ObjVentas.DtResultados
|
|
DtDatos = ObjVentas.DtResultados
|
|
End If
|
|
If DtDatos IsNot Nothing AndAlso 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}&CveCategoria={10}",
|
|
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.DBCampo("CveCategoria"))
|
|
e.Row.Cells(0).Text = String.Format("<a class=""{0}"" href=""{1}"">{2}</a>", Css, Liga, e.Row.Cells(0).Text)
|
|
|
|
'e.Row.Cells(3).Text =
|
|
' e.Row.Cells(5).Text =
|
|
Else
|
|
e.Row.Cells(12).BackColor = Drawing.Color.LightGray
|
|
End If
|
|
|
|
|
|
If UsuarioActual.Empresa.Funcionalidad(382) = "1" Then
|
|
e.Row.FCLabel("LblPorcentajeCredito").Visible = True
|
|
e.Row.FCLabel("LblPorcentajeContado").Visible = True
|
|
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(" <b>Fecha Inicio </b>: {0}", txtFechaI.Text.ToDate.ToShortDateString)
|
|
If txtFechaF.Text <> "" Then StrFiltro.AppendFormat(" <b>Fecha Fin </b>: {0}", txtFechaF.Text.ToDate.ToShortDateString)
|
|
If DdlSubProyecto.GetSelectedText <> "" Then StrFiltro.AppendFormat(" <b>SubProyecto</b>: {0}", DdlSubProyecto.GetSelectedText)
|
|
If DdlClientesWS.SelectedValue <> "-1" Then StrFiltro.AppendFormat(" <b>Cliente</b>: {0}", DdlClientesWS.SelectedText)
|
|
If DdlPS.SelectedValue <> "-1" Then StrFiltro.AppendFormat(" <b>P.S.</b>: {0}", DdlPS.SelectedText)
|
|
If DdlClasificacion.SelectedValue <> "-1" Then StrFiltro.AppendFormat(" <b>Clasificación</b>: {0}", DdlClasificacion.SelectedItem.Text)
|
|
If DdlClientesWS.SelectedValue <> "-1" Then StrFiltro.AppendFormat(" <b>Cliente</b>: {0}", DdlClientesWS.SelectedText)
|
|
If DdlVendedor.GetSelectedText <> "" Then StrFiltro.AppendFormat(" <b>Vendedor</b>: {0}", DdlVendedor.GetSelectedText)
|
|
If DdlMarcas.SelectedValue <> "-1" Then StrFiltro.AppendFormat(" <b>Marcas</b>: {0}", DdlMarcas.SelectedItem.Text)
|
|
|
|
Dim Imagen As New System.IO.FileInfo($"{UsuarioActual.Empresa.Ruta}/Logo.png")
|
|
'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", NowADS().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
|
|
|
|
|
|
Protected Sub LnkModalPorcentajes_Click(sender As Object, e As EventArgs)
|
|
|
|
GvPorcentajes.DataSource = Nothing
|
|
GvPorcentajes.DataBind()
|
|
UpModalPorcentajes.Update()
|
|
RegistraScript("$('#DivModalPorcetajes').modal(`show`);")
|
|
End Sub
|
|
|
|
|
|
|
|
Protected Sub BtnModalConsultaPorcentaje_Click(sender As Object, e As EventArgs)
|
|
|
|
Dim ObjVentas As New ClsVentas()
|
|
Dim FechaI As Date = TxtModalFechaInicio.Text.ToDate
|
|
Dim FechaF As Date = TxtModalFechaFin.Text.ToDate
|
|
If TxtModalFechaInicio.Text = "" Then FechaI = MinFecha
|
|
If TxtModalFechaFin.Text = "" Then FechaF = MaxFecha
|
|
|
|
If ObjVentas.GetReporteVentasUtilidad("-1", -1, "-1", FechaI, FechaF, UsuarioActual.CveEmpresa, -1, -1, -1, -1, -1) Then
|
|
GvPorcentajes.DataSource = ObjVentas.DtResultados.FiltraParametros($" CveVenta > 0 AND PorNeto <= {TxtModalPorcentaje.Text.ToDecimal} AND TipoDocto = 'Ing' AND CveEstatusFactura IN(2,3) ")
|
|
End If
|
|
|
|
ObjVentas.Dispose()
|
|
GvPorcentajes.DataBind()
|
|
|
|
ObjVentas.Dispose()
|
|
UpModalPorcentajes.Update()
|
|
|
|
End Sub
|
|
|
|
Protected Sub GvPorcentajes_RowDataBound(sender As Object, e As GridViewRowEventArgs)
|
|
|
|
If e.Row.RowType = DataControlRowType.Header Then
|
|
e.Row.Cells(0).Text = SubProyectoConf
|
|
End If
|
|
|
|
End Sub
|
|
End Class
|