Files
SIG/Ventas/RepVentasUtilidad.aspx.vb
rrene 1c14bceea9 -- cambio de GlobalDTSubProyectos
- cambio en GlobalDTUsuarios
2024-08-01 05:46:28 -07:00

378 lines
20 KiB
VB.net

Option Explicit On
Option Strict On
Imports System.Data
Imports System.Drawing
Imports Extensiones
Imports Microsoft.Reporting.WebForms
Partial Class Ventas_RepVentasUtilidad
Inherits ClsPaginas
#Region "P R O P I E D A D E S "
Private Property DtVentas As DataTable
Get
Return DirectCast(ViewState("DtVentas"), DataTable)
End Get
Set(value As DataTable)
ViewState("DtVentas") = 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
DtVentas = Nothing
CargaCombos()
CargaDatos()
End If
End Sub
#Region " INICIALIZA VALORES "
Private Sub CargaCombos()
txtFechaI.Text = NowADS().FirstDayOfMonth.ToShortDateString
txtFechaF.Text = NowADS().LastDayOfMonth.ToShortDateString
'Carga Clientes
Dim EsWS As Boolean = True
If EsWS Then
DdlClientes.setEsWebService(True)
DdlClientes.SelectedValue = "-1"
DdlClientes.SelectedText = "Todos"
Else
DdlClientes.setEsWebService(False)
DdlClientes.DataSource = GlobalDTCliente(UsuarioActual.CveEmpresa, -1)
DdlClientes.DataBind()
DdlClientes.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
DdlMarcas.DataSource = GlobalDTGralMarcas(UsuarioActual.CveEmpresa)
DdlMarcas.DataBind()
DdlMarcas.Items.Insert(0, New ListItem("Todas", "-1"))
Dim CveSubProyecto As String = If(Request("CveSubProyecto") IsNot Nothing, Request("CveSubProyecto").ToString, "-1").ToString
Dim CveVendedor As String = If(Request("CveVendedor") IsNot Nothing AndAlso Request("CveVendedor") <> "", Request("CveVendedor"), "-1").ToString
Dim CveCliente As String = If(Request("CveCliente") IsNot Nothing AndAlso Request("CveCliente") <> "", Request("CveCliente"), "-1").ToString
Dim CveGpo As String = If(Request("CveGpo") IsNot Nothing AndAlso Request("CveGpo") <> "", Request("CveGpo"), "-1").ToString
Dim Gpo As String = If(Request("Gpo") IsNot Nothing AndAlso Request("Gpo") <> "", Request("Gpo"), "-1").ToString
Dim FechaI As String = If(Request("FechaI") IsNot Nothing, Request("FechaI").ToString, "-1").ToString
Dim FechaF As String = If(Request("FechaF") IsNot Nothing, Request("FechaF").ToString, "-1").ToString
Dim CveClasificacion As String = If(Request("CveClasificacion") IsNot Nothing AndAlso Request("CveClasificacion") <> "", Request("CveClasificacion"), "-1").ToString
Dim CveCategoria As String = If(Request("CveCategoria") IsNot Nothing AndAlso Request("CveCategoria") <> "", Request("CveCategoria"), "-1").ToString
Dim CvePS As String = If(Request("CvePS") IsNot Nothing AndAlso Request("CvePS") <> "", Request("CvePS"), "-1").ToString
Dim CveMarca As String = If(Request("CveMarca") IsNot Nothing AndAlso Request("CveMarca") <> "", Request("CveMarca"), "-1").ToString
DdlSubProyecto.SelectedValuesIfExistM(CveSubProyecto)
DdlVendedor.SelectedValuesIfExistM(CveVendedor)
If CveCliente <> "-1" Then
DdlClientes.SelectedValue = CveCliente
DdlClientes.SelectedText = GlobalDTCliente(UsuarioActual.CveEmpresa).FiltraParametros($"CveCliente = {CveCliente}").FiltroPrimeroValor("Nombre")
End If
DdlCategoria.SelectedValueExist(CveCategoria)
DdlClasificacion.SelectedValueExist(CveClasificacion)
DdlPS.SelectedValue = CvePS
If CvePS.ToEntero > 0 AndAlso GlobalDTPS(UsuarioActual.CveEmpresa, CvePS.ToEntero).Rows.Count > 0 Then
DdlPS.SelectedText = GlobalDTPS(UsuarioActual.CveEmpresa, CvePS.ToEntero).Rows(0)("PSCodigo").ToString
Else
DdlPS.SelectedText = "Todos"
End If
DdlMarcas.SelectedValueExist(CveMarca)
txtFechaI.Text = FechaI
txtFechaF.Text = FechaF
Select Case Gpo.ToEntero
Case 1
txtFechaF.Text = $"31/12/{CveGpo}"
Case 2
Dim Mes As String = CveGpo.Substring(5, 2)
Dim DiaFinal As String = ""
If Mes = "02" Then DiaFinal = "28" Else If Mes.Contiene("01", "03", "05", "07", "08", "10", "12") Then DiaFinal = "31" Else DiaFinal = "30"
txtFechaI.Text = $"01/{CveGpo.Substring(5, 2)}/{CveGpo.Substring(0, 4)}"
If txtFechaI.Text.ToDate.FirstDayOfMonth = FechaI.ToDate.FirstDayOfMonth Then
txtFechaI.Text = FechaI.ToDate.ToShortDateString
End If
txtFechaF.Text = $"{DiaFinal}/{CveGpo.Substring(5, 2)}/{CveGpo.Substring(0, 4)}"
Case 3
txtFechaI.Text = CveGpo
txtFechaF.Text = CveGpo
End Select
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
#End Region
#Region " CARGA DATOS "
Protected Sub BtnConsultar_Click(sender As Object, e As System.EventArgs) Handles BtnConsultar.Click
CargaDatos()
UPDatos.Update()
UpIndicador.Update()
End Sub
Private Sub CargaDatos()
Dim ObjVentas As New ClsVentas()
Dim FechaI As Date = txtFechaI.Text.ToDate
Dim FechaF As Date = txtFechaF.Text.ToDate
If txtFechaI.Text = "" Then FechaI = MinFecha
If txtFechaF.Text = "" Then FechaF = MaxFecha
Dim Sucursales As String = IIf(DdlSubProyecto.GetSelectedValuesM = "", "-1", DdlSubProyecto.GetSelectedValuesM).ToString
Dim Vendedores As String = IIf(DdlVendedor.GetSelectedValuesM = "", "-1", DdlVendedor.GetSelectedValuesM).ToString
If ObjVentas.GetReporteVentasUtilidad(Vendedores, DdlClientes.SelectedValue.ToEntero, Sucursales, FechaI, FechaF, UsuarioActual.CveEmpresa, DdlPS.SelectedValue.ToEntero, DdlCategoria.SelectedValue.ToEntero, DdlClasificacion.SelectedValue.ToEntero, DdlMarcas.SelectedValue.ToEntero, -1) Then
DtVentas = ObjVentas.DtResultados
GvDatos.DataSource = ObjVentas.DtResultados
GvDatos.DataBind()
ObjVentas.Dispose()
End If
Dim Neto As Double = ObjVentas.Neto
If ObjVentas.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 = ObjVentas.Neto.ToString("N2")
LblPorNeto.Text = ObjVentas.PorNeto.ToString("N2")
Else
If ObjVentas.Neto < 0 Then
Neto = (ObjVentas.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 = ObjVentas.PorNeto.ToString("N2")
End If
End Sub
Protected Sub GvDatos_RowDataBound(sender As Object, e As System.Web.UI.WebControls.GridViewRowEventArgs) Handles GvDatos.RowDataBound
If e.Row.RowType = DataControlRowType.DataRow Then
If e.Row.RowIndex = 0 Then
e.Row.Cells(0).Text = "Total General"
e.Row.BackColor = ColorTranslator.FromHtml("#95A5A6")
End If
If Not e.Row.RowIndex = 0 AndAlso e.Row.DBCampo("SubTotal").ToDecimal = 0 AndAlso e.Row.DBCampo("CveVenta").ToEntero > 0 Then
If e.Row.DBCampo("FechaVenta").ToDate < txtFechaI.Text.ToDate.FirstDayOfMonth Then
e.Row.ToolTip = "Venta con realizada en un periodo anterior"
End If
e.Row.CssClass = "danger"
ElseIf Not e.Row.RowIndex = 0 AndAlso e.Row.DBCampo("CveVenta") <> "" Then
e.Row.Cells(0).BackColor = ColorTranslator.FromHtml("#e9e9e9")
e.Row.Cells(1).BackColor = ColorTranslator.FromHtml("#e9e9e9")
e.Row.Cells(2).BackColor = ColorTranslator.FromHtml("#e9e9e9")
e.Row.Cells(3).BackColor = ColorTranslator.FromHtml("#e9e9e9")
e.Row.Cells(4).BackColor = ColorTranslator.FromHtml("#f1f1f1")
e.Row.Cells(5).BackColor = ColorTranslator.FromHtml("#f1f1f1")
e.Row.Cells(6).BackColor = ColorTranslator.FromHtml("#f1f1f1")
e.Row.Cells(7).BackColor = ColorTranslator.FromHtml("#f1f1f1")
e.Row.Cells(4).BackColor = ColorTranslator.FromHtml("#fafafa")
e.Row.Cells(5).BackColor = ColorTranslator.FromHtml("#fafafa")
e.Row.Cells(6).BackColor = ColorTranslator.FromHtml("#fafafa")
e.Row.Cells(7).BackColor = ColorTranslator.FromHtml("#fafafa")
End If
If e.Row.DBCampo("CveVenta") = "" Then
e.Row.Cells(6).Text = ""
e.Row.Cells(7).Text = ""
e.Row.Cells(8).Text = ""
e.Row.Cells(10).Text = ""
End If
If e.Row.DBCampo("CveMovimiento") = "" Then
e.Row.Cells(7).Text = ""
e.Row.Cells(8).Text = ""
e.Row.Cells(10).Text = ""
End If
If e.Row.DBCampo("CveVenta") = "" Then
e.Row.CssClass = "Totales"
End If
If e.Row.DBCampo("CveVenta").ToEntero > 0 AndAlso Not CBool(e.Row.DBCampo("TienePago")) Then
e.Row.Cells(15).BackColor = Drawing.Color.LightPink
e.Row.Cells(15).ToolTip = "Factura sin pago registrado"
End If
Dim Liga As String = String.Format("/Ventas/RepVentasUtilidadDetalle.aspx?CveVenta={0}&CveVendedor={1}&FechaI={2:d}&FechaF={3:d}&CveCliente={4}&Orden={5}&CveSubProyecto={6}&CvePS={7}&CveClasificacion={8}",
e.Row.DBCampo("CveVenta"), e.Row.DBCampo("CveVendedor"), e.Row.DBCampo("FechaI").ToDate, e.Row.DBCampo("FechaF").ToDate, e.Row.DBCampo("CveCliente"), e.Row.DBCampo("Orden"), e.Row.DBCampo("CveSubProyecto"), e.Row.DBCampo("CvePS"), e.Row.DBCampo("CveClasificacion"))
e.Row.FCHyperLink("HLCosto").NavigateUrl = Liga
e.Row.FCHyperLink("HlGanancia").NavigateUrl = Liga
e.Row.FCHyperLink("HlPorGanancia").NavigateUrl = Liga
e.Row.FCHyperLink("HlPerdida").NavigateUrl = Liga
e.Row.FCHyperLink("HlPorPerdida").NavigateUrl = Liga
If e.Row.DBCampo("Perdida").ToDouble > 0 Then
e.Row.FCHyperLink("HlPerdida").ForeColor = Color.DarkRed
e.Row.FCHyperLink("HlPorPerdida").ForeColor = Color.DarkRed
End If
End If
End Sub
Private Sub OrdenaDatos()
If (GvDatos.Rows.Count > 0) Then
GvDatos.UseAccessibleHeader = True
GvDatos.HeaderRow.TableSection = TableRowSection.TableHeader
RegistraScript("OrdenarGV();")
End If
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 " EXPORTAR EXCEL - PDF "
Protected Sub ImgExcel_Click(sender As Object, e As System.EventArgs) Handles ImgExcel.Click
GenerarPDFCrystal("EXCEL")
End Sub
Private Sub ImgImprimir_Click(sender As Object, e As EventArgs) Handles ImgImprimir.Click
'GenerarPDF()
GenerarPDFCrystal()
End Sub
Private Sub GenerarPDF(Optional Formato As String = "PDF")
Dim ObjVentas As New ClsVentas()
Dim FechaI As Date = txtFechaI.Text.ToDate
Dim FechaF As Date = txtFechaF.Text.ToDate
If txtFechaI.Text = "" Then FechaI = MinFecha
If txtFechaF.Text = "" Then FechaF = MaxFecha
Dim Cliente As String = If(DdlClientes.SelectedValue = "", "", $"&emsp;<b>Cliente:</b> {DdlClientes.SelectedText}")
Dim Sucursal As String = If(DdlSubProyecto.GetSelectedText = "", "", $"&emsp;<b>Sucursal:</b> {DdlSubProyecto.GetSelectedText}")
Dim Vendedor As String = If(DdlVendedor.GetSelectedText = "", "", $"&emsp;<b>Vendedor:</b> {DdlVendedor.GetSelectedText}")
Dim PS As String = If(DdlPS.SelectedValue = "-1", "", $"&emsp;<b>P.S.:</b> {DdlPS.SelectedText}")
Dim Clasificacion As String = If(DdlClasificacion.SelectedValue = "-1", "", $"&emsp;<b>Clasificacion:</b> {DdlClasificacion.SelectedItem.Text}")
Dim Marca As String = If(DdlMarcas.SelectedValue = "-1", "", $"&emsp;<b>Marcas:</b> {DdlMarcas.SelectedItem.Text}")
Dim Categoria As String = If(DdlCategoria.SelectedValue = "-1", "", $"&emsp;<b>Categoria:</b> {DdlCategoria.SelectedItem.Text}")
' Dim Grupo = DdlGrupo.SelectedItem.Text
Dim FechaIn As String = $"&emsp;<b>Fecha Inicio:</b> {txtFechaI.Text}"
Dim FechaFn As String = $"&emsp;<b>Fecha Fin:</b> {txtFechaF.Text}"
If txtFechaI.Text = "" Then FechaIn = ""
If txtFechaF.Text = "" Then FechaFn = ""
'Dim Registro = If(DdlUsuario.SelectedValue = "-1", "", $"&emsp;<b>Registró:</b> {DdlUsuario.SelectedItem.Text}")
' Dim Responsable = If(DdlResponsable.SelectedValue = "-1", "", $"&emsp;<b>Responsable:</b> {DdlResponsable.SelectedItem.Text}")
Dim Sucursales As String = IIf(DdlSubProyecto.GetSelectedValuesM = "", "-1", DdlSubProyecto.GetSelectedValuesM).ToString
Dim Vendedores As String = IIf(DdlVendedor.GetSelectedValuesM = "", "-1", DdlVendedor.GetSelectedValuesM).ToString
If ObjVentas.GetReporteVentasUtilidad(Vendedores, DdlClientes.SelectedValue.ToEntero, Sucursales, FechaI, FechaF, UsuarioActual.CveEmpresa, DdlPS.SelectedValue.ToEntero, DdlCategoria.SelectedValue.ToEntero, DdlClasificacion.SelectedValue.ToEntero, DdlMarcas.SelectedValue.ToEntero, -1) Then
Dim FechaInicio As String = txtFechaI.Text
Dim FechaFin As String = txtFechaF.Text
If txtFechaI.Text = "" Then FechaInicio = "-1"
If txtFechaF.Text = "" Then FechaFin = "-1"
Dim Imagen As New System.IO.FileInfo($"{UsuarioActual.Empresa.Ruta}/Logo.png")
Dim logouri As String = String.Format("{0}://{1}:{2}/Empresas/{3}/Logo.png", Request.Url.Scheme, Request.Url.Host, Request.Url.Port, UsuarioActual.CveEmpresa)
Dim dt As DataTable = ObjVentas.DtResultados
Dim params As New List(Of ReportParameter)
params.Add(New ReportParameter("NombreEmpresa", UsuarioActual.Empresa.Empresa))
params.Add(New ReportParameter("FechaInicio", FechaInicio))
params.Add(New ReportParameter("FechaFin", FechaFin))
params.Add(New ReportParameter("UsuarioImprimio", UsuarioActual.Nombre))
params.Add(New ReportParameter("FechaImpresion", NowADS().ToDateTime.ToShortDateString))
params.Add(New ReportParameter("AgrupadoPor", $"{Cliente}{Sucursal}{Vendedor}{PS}{Clasificacion}{FechaIn}{FechaFn}"))
params.Add(New ReportParameter("Neto", LblNeto.Text))
params.Add(New ReportParameter("PorNeto", LblPorNeto.Text + " %"))
params.Add(New ReportParameter("UtilidadPerdida", LblNombreNeto.Text))
params.Add(New ReportParameter("LogoPath", If(Imagen.Exists, $"file://{Imagen.FullName}", "")))
ImprimirPDF("Grales/Formatos/RepVentasUtilidad.rdlc", dt, params, "RepVentasUtilidad", Formato)
Else
Alert("No hay datos consultados", TipoMensaje.MsgAdvertencia)
End If
End Sub
Private Sub GenerarPDFCrystal(Optional Formato As String = "PDF")
Dim Imagen As New System.IO.FileInfo($"{UsuarioActual.Empresa.Ruta}/Logo.png")
Dim logouri As String = String.Format("{0}://{1}:{2}/Empresas/{3}/Logo.png", Request.Url.Scheme, Request.Url.Host, Request.Url.Port, UsuarioActual.CveEmpresa)
Dim Sucursal As String = If(DdlSubProyecto.GetSelectedText = "", "", $"&emsp;<b>Sucursal:</b> {DdlSubProyecto.GetSelectedText}")
Dim FechaIn As String = $"&emsp;<b>Fecha Inicio:</b> {txtFechaI.Text}"
Dim FechaFn As String = $"&emsp;<b>Fecha Fin:</b> {txtFechaF.Text}"
Dim Cliente As String = If(DdlClientes.SelectedValue = "-1", "", $"&emsp;<b>Cliente:</b> {DdlClientes.SelectedText}")
Dim Vendedor As String = If(DdlVendedor.GetSelectedText = "", "", $"&emsp;<b>Vendedor:</b> {DdlVendedor.GetSelectedText}")
Dim PS As String = If(DdlPS.SelectedValue = "-1", "", $"&emsp;<b>P.S.:</b> {DdlPS.SelectedText}")
Dim Clasificacion As String = If(DdlClasificacion.SelectedValue = "-1", "", $"&emsp;<b>Clasificacion:</b> {DdlClasificacion.SelectedItem.Text}")
Dim lista As New List(Of CrystalParametro)
lista.Add(New CrystalParametro("Empresa", UsuarioActual.Empresa.Empresa))
lista.Add(New CrystalParametro("AgrupadoPor", $"{Sucursal}{FechaIn}{FechaFn}{Cliente}{Vendedor}{PS}{Clasificacion}"))
lista.Add(New CrystalParametro("UtilidadPerdida", LblNombreNeto.Text))
lista.Add(New CrystalParametro("Neto", LblNeto.Text))
lista.Add(New CrystalParametro("PorNeto", LblPorNeto.Text + " %"))
lista.Add(New CrystalParametro("UsuarioImprimio", UsuarioActual.Usuario))
If Imagen.Exists Then
lista.Add(New CrystalParametro("ImagenPath", logouri))
Else
lista.Add(New CrystalParametro("ImagenPath", ""))
End If
ImprimirbytesPDF(ImprimirPDFCrystal(Server.MapPath("~/Empresas/Grales/Formatos/RepVentaUtilidad.rpt"), DtVentas, lista, "RepVentasUtilidades", Formato), "RepVentasUtilidades", Formato)
End Sub
#End Region
End Class