This commit is contained in:
2025-05-05 12:13:26 -07:00
5 changed files with 1721 additions and 117 deletions

View File

@@ -386,26 +386,34 @@ Public Class ClsGenerales
Return ds
End Function
Public Function GetDashboardData(CveEmpresa As Integer) As DataSet
Dim ds As New DataSet
DataAdapter("PA_Gral_DashboardsGet")
With SqlAdapter.SelectCommand.Parameters
.Add("@Opcion", SqlDbType.Int).Value = 1
.Add("@CveEmpresa", SqlDbType.Int).Value = CveEmpresa
.Add("@FechaInicio", SqlDbType.Date).Value = Date.Now.AddYears(-1)
.Add("@FechaFin", SqlDbType.Date).Value = Date.Now
End With
Public Sub GetDashboardData(Opcion As Integer, CveEmpresa As Integer, FechaInicio As Date, FechaFin As DateTime)
Try
SqlAdapter.Fill(ds)
ds.Tables(0).TableName = "Indicadores"
ds.Tables(1).TableName = "DetalleDia"
Return ds
Catch ex As Exception
' Manejo de errores
Return Nothing
End Try
End Function
DataAdapter("PA_Gral_DashboardsGet")
SqlAdapter.SelectCommand.CommandTimeout = 0
With SqlAdapter.SelectCommand.Parameters
.Add("@Opcion", SqlDbType.Int).Value = Opcion
.Add("@CveEmpresa", SqlDbType.Int).Value = CveEmpresa
.Add("@FechaInicio", SqlDbType.Date).Value = FechaInicio
.Add("@FechaFin", SqlDbType.Date).Value = FechaFin
End With
Try
SqlAdapter.Fill(DSet)
DSet.Tables(0).TableName = "Indicadores"
DSet.Tables(1).TableName = "DetalleDia"
DSet.Tables(2).TableName = "DetalleAnualesMes"
DSet.Tables(3).TableName = "VentasPorVendedor"
DSet.Tables(4).TableName = "VentasPorClasificacion"
DSet.Tables(5).TableName = "VentasPorMarca"
DSet.Tables(6).TableName = "VentasPorPS"
DSet.Tables(7).TableName = "VentasPorCliente"
DSet.Tables(8).TableName = "VentasPorProveedor"
Catch ex As Exception
' Manejo de errores
OnError("Ocurrió un error al obtener los datos del Dashboard.", ex, SqlAdapter.SelectCommand.Parameters.ParametrosInfo())
End Try
End Sub
#End Region

View File

@@ -41,9 +41,9 @@ Public Class ClsValidaCFDi
End Sub
Public Sub New(FolioFiscal As String, RFCEmisor As String, RFCReceptor As String, Optional Importe As Decimal = 0)
Me.LFolioFiscal = HttpUtility.UrlEncode(FolioFiscal)
Me.LRFCEmisor = HttpUtility.UrlEncode(RFCEmisor)
Me.LRFCReceptor = HttpUtility.UrlEncode(RFCReceptor)
Me.LFolioFiscal = FolioFiscal
Me.LRFCEmisor = RFCEmisor
Me.LRFCReceptor = RFCReceptor
Me.LImporte = Importe
VerificaCFDI()
End Sub

View File

@@ -1779,10 +1779,10 @@ Partial Class Compras_Compras
DdlTipoComprobante.SelectedValueExist("DEV")
End If
If Not CveCompra > 0 Or (CveCompra > 0 And UsuarioActual.CveEmpresa = 141) Then
LnkProrrateoGasolina.Visible = True
InicializaDTProrrateoGasolina()
End If
'If Not CveCompra > 0 Or (CveCompra > 0 And UsuarioActual.CveEmpresa = 141) Then
LnkProrrateoGasolina.Visible = True
InicializaDTProrrateoGasolina()
'End If
'If UsuarioActual.Empresa.Funcionalidad(382) = "1" Then
' If Request("SaldarRNC") IsNot Nothing AndAlso Request("SaldarRNC").ToString.ToEntero = 1 Then
@@ -8011,67 +8011,73 @@ Partial Class Compras_Compras
AutoConta = False
End If
If Not ErrorPrepoliza AndAlso Not ObjConta.ValidacionesPrePoliza(CvePrePoliza, UsuarioActual, Opcion:=4, AutoConta:=AutoConta) Then
TieneError = True
If ObjConta.ValorPolizaDescuadre > 0 Then
Alert($"{ObjConta.MensajePolizaDescuadre} Diferencia{ObjConta.ValorDiferencia}", TipoMensaje.MsgError)
ErrorPrepolizaDescuadre = True
End If
Dim OpValidacion As Integer = 4
If UsuarioActual.CveEmpresa.Contiene(7, 11, 12, 122, 145) AndAlso RBLPago.SelectedValue.ToEntero = 3 AndAlso RBLContado.SelectedValue.ToEntero.Contiene(6, 2) Then
OpValidacion = 499
End If
If UsuarioActual.Empresa.Funcionalidad(574) = "1" AndAlso (ImporteRNC > 0 OrElse ImporteRNCProntoPago > 0) Then
If Not ErrorPrepoliza AndAlso Not ObjConta.ValidacionesPrePoliza(CvePrePoliza, UsuarioActual, Opcion:=OpValidacion, AutoConta:=AutoConta) Then
TieneError = True
If ObjConta.ValorPolizaDescuadre > 0 Then
Alert($"{ObjConta.MensajePolizaDescuadre} Diferencia{ObjConta.ValorDiferencia}", TipoMensaje.MsgError)
ErrorPrepolizaDescuadre = True
End If
End If
If ImporteRNC > 0 AndAlso Not GeneraRNC(ObjCompras.IniciaTransacSQL, CveCompra, CompraActual, ObjConta, CvePrePoliza, DdlProveedor.SelectedValue.ToEntero, DdlProveedor.SelectedItem.Text, TxtFecha.Text.ToDate, $"Remisión Nota de Crédito {TxtDescripcion.Text}", ImporteRNC, DdlMoneda.SelectedValue.ToEntero, TxtTC.Text.ToDecimal,
If UsuarioActual.Empresa.Funcionalidad(574) = "1" AndAlso (ImporteRNC > 0 OrElse ImporteRNCProntoPago > 0) Then
If ImporteRNC > 0 AndAlso Not GeneraRNC(ObjCompras.IniciaTransacSQL, CveCompra, CompraActual, ObjConta, CvePrePoliza, DdlProveedor.SelectedValue.ToEntero, DdlProveedor.SelectedItem.Text, TxtFecha.Text.ToDate, $"Remisión Nota de Crédito {TxtDescripcion.Text}", ImporteRNC, DdlMoneda.SelectedValue.ToEntero, TxtTC.Text.ToDecimal,
TxtSerie.Text, TxtFolio.Text) Then
TieneError = True
End If
TieneError = True
End If
If ImporteRNCProntoPago > 0 AndAlso Not GeneraRNC(ObjCompras.IniciaTransacSQL, CveCompra, CompraActual, ObjConta, CvePrePoliza, DdlProveedor.SelectedValue.ToEntero, DdlProveedor.SelectedItem.Text, TxtFecha.Text.ToDate, $"Remisión Nota de Crédito {TxtDescripcion.Text}", ImporteRNCProntoPago, DdlMoneda.SelectedValue.ToEntero, TxtTC.Text.ToDecimal,
If ImporteRNCProntoPago > 0 AndAlso Not GeneraRNC(ObjCompras.IniciaTransacSQL, CveCompra, CompraActual, ObjConta, CvePrePoliza, DdlProveedor.SelectedValue.ToEntero, DdlProveedor.SelectedItem.Text, TxtFecha.Text.ToDate, $"Remisión Nota de Crédito {TxtDescripcion.Text}", ImporteRNCProntoPago, DdlMoneda.SelectedValue.ToEntero, TxtTC.Text.ToDecimal,
TxtSerie.Text, TxtFolio.Text, PrefijoSerie:="PP") Then
TieneError = True
TieneError = True
End If
End If
If Not TieneError Then
ObjCompras.Commit()
If ObjContaAC IsNot Nothing Then ObjContaAC.Commit()
Dim CveEvaluacionProveedor As Integer = -1
If Me.RequiereEvaluacion Then
Dim ObjPro As New ClsCompProveedores()
CveEvaluacionProveedor = ObjPro.AddEvaluacionProveedor(CveProveedor, CveCompra, NowADS(), "", Me.CveUsuarioEvaluador, "", "", UsuarioActual.CveEmpresa)
ObjPro.Dispose()
End If
'ENVIO DE CORREO NOTIFICACION A VENDEDORES DE OC
MandaCorreoOCVendedores(CveCompra)
If Not ErrorMovInv Then
For Each intMovimientoAlmacen As Integer In ListaMovimientosAlmacen
MandaCorreoOCVendedoresRecepcionAlmacen(CveCompra, intMovimientoAlmacen)
Next
End If
If CveEvaluacionProveedor > 0 Then
Msg.Append("<br/><br/>El proveedor tiene evaluaciones pendientes<br/>")
Msg.Append("¿Desea realizar una evaluación al proveedor?")
Msg.AppendFormat($"</br><a class=""Texto"" target='_blank' href=""/Compras/EvaluacionProveedor.aspx?CveEvaluacionProveedor={CveEvaluacionProveedor}"">Evaluar Proveedor.</a>")
End If
BtnGuardar.Enabled = False
UpFacturar.Update()
Alert(Msg.ToString, TipoMensaje.MsgInformacion, MsgAccionAceptar)
Else
ObjCompras.RollBack()
If ObjContaAC IsNot Nothing Then ObjContaAC.RollBack()
Alert("Ocurrio un error al guardar la compra. Por favor intente nuevamente.", TipoMensaje.MsgError)
End If
End If
If Not TieneError Then
ObjCompras.Commit()
If ObjContaAC IsNot Nothing Then ObjContaAC.Commit()
Dim CveEvaluacionProveedor As Integer = -1
If Me.RequiereEvaluacion Then
Dim ObjPro As New ClsCompProveedores()
CveEvaluacionProveedor = ObjPro.AddEvaluacionProveedor(CveProveedor, CveCompra, NowADS(), "", Me.CveUsuarioEvaluador, "", "", UsuarioActual.CveEmpresa)
ObjPro.Dispose()
End If
'ENVIO DE CORREO NOTIFICACION A VENDEDORES DE OC
MandaCorreoOCVendedores(CveCompra)
If Not ErrorMovInv Then
For Each intMovimientoAlmacen As Integer In ListaMovimientosAlmacen
MandaCorreoOCVendedoresRecepcionAlmacen(CveCompra, intMovimientoAlmacen)
Next
End If
If CveEvaluacionProveedor > 0 Then
Msg.Append("<br/><br/>El proveedor tiene evaluaciones pendientes<br/>")
Msg.Append("¿Desea realizar una evaluación al proveedor?")
Msg.AppendFormat($"</br><a class=""Texto"" target='_blank' href=""/Compras/EvaluacionProveedor.aspx?CveEvaluacionProveedor={CveEvaluacionProveedor}"">Evaluar Proveedor.</a>")
End If
BtnGuardar.Enabled = False
UpFacturar.Update()
Alert(Msg.ToString, TipoMensaje.MsgInformacion, MsgAccionAceptar)
Else
ObjCompras.RollBack()
If ObjContaAC IsNot Nothing Then ObjContaAC.RollBack()
Alert("Ocurrio un error al guardar la compra. Por favor intente nuevamente.", TipoMensaje.MsgError)
End If
End If
Else
ObjCompras.RollBack()
If ObjContaAC IsNot Nothing Then ObjContaAC.RollBack()
Alert("Ocurrio un error al guardar la compra. Por favor intente nuevamente..", TipoMensaje.MsgError)
@@ -23028,6 +23034,16 @@ Partial Class Compras_Compras
End If
If DTProrrateoGasolina.Rows.Count > 0 Then
If CveCompra > 0 Then
For Each dRow As DataRow In TmpDT.Rows
Dim CveCompraDetalle As Integer = dRow("CveCompraDetalle").ToString.ToEntero
If CveCompraDetalle > 0 Then
ClavesBorradas.Add(CveCompraDetalle)
End If
Next
End If
TmpDT.Rows.Clear()
For Each dRow As DataRow In DTProrrateoGasolina.Rows
AddPS(1, dRow("CveUM").ToString.ToEntero, dRow("UM").ToString, dRow("CveClasificacion").ToString.ToEntero, dRow("Clasificacion").ToString, dRow("CvePS").ToString.ToEntero, dRow("PS").ToString, 1, dRow("CveSubProyecto").ToString, dRow("SubProyecto").ToString, "",

File diff suppressed because it is too large Load Diff

View File

@@ -5,68 +5,444 @@ Imports System.Web.Services
Imports Newtonsoft.Json
Imports ADSNetLibrary.SIGAPI.Models.CRM.Request
Imports ADSNetLibrary.SIGAPI.Services.CRM
Imports System.Globalization
Partial Class General_Dashboard
Inherits ClsPaginas
Protected Sub Page_Load(sender As Object, e As EventArgs) Handles Me.Load
If Not IsPostBack Then
CargarIndicadores()
BindDropdown()
ddlDashboardOption.SelectedValue = "1" ' Opción por defecto: Ingresos
LoadDashboard()
End If
End Sub
Private Sub CargarIndicadores()
Dim Gral As New ClsGenerales
Dim ds As DataSet = Gral.GetDashboardData(UsuarioActual.CveEmpresa)
Protected Sub ddlDashboardOption_SelectedIndexChanged(sender As Object, e As EventArgs)
LoadDashboard()
End Sub
If ds IsNot Nothing AndAlso ds.Tables.Count > 0 Then
ProcesarDatosIndicadores(ds.Tables(0))
Private Sub BindDropdown()
' Actualmente las opciones están definidas en el markup
' Aquí podrías cargar dinámicamente si lo deseas en el futuro
End Sub
Private Sub LoadDashboard()
Dim opcion As Integer = Integer.Parse(ddlDashboardOption.SelectedValue)
Dim hoy As DateTime = DateTime.Now
Dim inicio As DateTime = New DateTime(hoy.Year, 1, 1)
Dim Gral As New ClsGenerales
Gral.GetDashboardData(opcion, UsuarioActual.CveEmpresa, inicio, hoy)
Dim ds As DataSet = Gral.DSResultados
If ds Is Nothing Then Return
' Selecciona la vista según la opción elegida
mvDashboard.ActiveViewIndex = opcion - 1 ' Asume que la primera opción = ViewIndex 0
Select Case opcion
Case 1 ' Ingresos
ProcesarDatosIndicadores(ds.Tables("Indicadores"))
CargarResumenSucursales(ds.Tables("DetalleDia"))
CargarVentasMensuales(ds.Tables("DetalleAnualesMes"))
CargarVentasPorSucursal(ds.Tables("DetalleDia"))
CargarVentasPorVendedor(ds.Tables("VentasPorVendedor"))
CargarVentasPorClasificacion(ds.Tables("VentasPorClasificacion"))
CargarVentasPorMarca(ds.Tables("VentasPorMarca"))
CargarVentasPorPS(ds.Tables("VentasPorPS"))
CargarVentasPorCliente(ds.Tables("VentasPorCliente"))
CargarVentasPorProveedor(ds.Tables("VentasPorProveedor"))
Case 2 ' Recuperación
' TODO: Implementar carga de indicadores, gráficas y grids para Recuperación
Case 3 ' Compras
' TODO: Implementar carga para Compras
Case 4 ' Gasto
' TODO: Implementar carga para Gasto
Case 5 ' Cuentas por Pagar
' TODO: Implementar carga para CxP
Case 6 ' Inventario
' TODO: Implementar carga para Inventario
Case 7 ' Utilidad
' TODO: Implementar carga para Utilidad
Case 8 ' Impuestos
' TODO: Implementar carga para Impuestos
Case 9 ' CRM
' TODO: Implementar carga para CRM
Case 10 ' RH
' TODO: Implementar carga para RH
Case 11 ' AF
' TODO: Implementar carga para AF
End Select
End Sub
Private Sub CargarIndicadores(dt As DataTable)
If dt IsNot Nothing AndAlso dt.Rows.Count > 0 Then
ProcesarDatosIndicadores(dt)
End If
End Sub
Private Sub ProcesarDatosIndicadores(dt As DataTable)
If dt.Rows.Count > 0 Then
Dim dr As DataRow = dt.Rows(0)
If dt Is Nothing OrElse dt.Rows.Count = 0 Then
Return
End If
Dim dr As DataRow = dt.Rows(0)
' Indicador Año
MuestraIndicador(DivIndicadores, "blue", "fa fa-calendar", "Año Actual", dr("AcumAño").ToString.FormatoNumero(0), "#", "Acumulado",
dr("AcumAñoPromedio").ToString.FormatoNumero(0), "#", "Promedio",
MuestraIndicador(DivIndicadoresLeft, "blue", "fa fa-calendar", "Año Actual", dr("AcumAño").ToString.FormatoNumero(0), "#", "Acumulado",
dr("AcumAñoPromedio").ToString.FormatoNumero(0), "#", "Ticket Promedio",
dr("AcumAñoContado").ToString.FormatoNumero(0), "#", "Contado",
dr("AcumAñoCredito").ToString.FormatoNumero(0), "#", "Crédito")
' Indicador Mes
MuestraIndicador(DivIndicadores, "green", "fa fa-calendar-check-o", "Mes Actual",
MuestraIndicador(DivIndicadoresLeft, "green", "fa fa-calendar-check-o", "Mes Actual",
dr("AcumMes").ToString.FormatoNumero(0), "#", "Acumulado",
dr("AcumMesPromedio").ToString.FormatoNumero(0), "#", "Promedio",
dr("AcumMesPromedio").ToString.FormatoNumero(0), "#", "Ticket Promedio",
dr("AcumMesContado").ToString.FormatoNumero(0), "#", "Contado",
dr("AcumMesCredito").ToString.FormatoNumero(0), "#", "Crédito")
' Indicador Semana
MuestraIndicador(DivIndicadores, "purple", "fa fa-calendar-minus-o", "Semana Actual",
MuestraIndicador(DivIndicadoresRight, "purple", "fa fa-calendar-minus-o", "Semana Actual",
dr("AcumSemana").ToString.FormatoNumero(0), "#", "Acumulado",
dr("AcumSemanaPromedio").ToString.FormatoNumero(0), "#", "Promedio",
dr("AcumSemanaPromedio").ToString.FormatoNumero(0), "#", "Ticket Promedio",
dr("AcumSemanaContado").ToString.FormatoNumero(0), "#", "Contado",
dr("AcumSemanaCredito").ToString.FormatoNumero(0), "#", "Crédito")
MuestraIndicador(DivIndicadores, "red", "fa fa-sun-o", "Hoy",
MuestraIndicador(DivIndicadoresRight, "red", "fa fa-sun-o", "Hoy",
"0".FormatoNumero(0), "#", "Acumulado",
"0".FormatoNumero(0), "#", "Promedio",
"0".FormatoNumero(0), "#", "Ticket Promedio",
"0".FormatoNumero(0), "#", "Contado",
"0".FormatoNumero(0), "#", "Crédito")
End If
End Sub
Private Sub CargarVentasMensuales(dt As DataTable)
If dt Is Nothing OrElse dt.Rows.Count = 0 Then
Return
End If
Dim mesesOrdenados = ObtenerMesesOrdenados()
Dim años = dt.AsEnumerable() _
.Select(Function(r) r.Field(Of Integer)("Año")) _
.Distinct() _
.OrderBy(Function(y) y) _
.ToList()
Dim seriesData As New List(Of Dictionary(Of String, Object))
For Each año In años
Dim añoData = dt.AsEnumerable() _
.Where(Function(r) r.Field(Of Integer)("Año") = año) _
.OrderBy(Function(r) r.Field(Of DateTime)("Fecha")) _
.ToList()
Dim dataPoints As New List(Of Object())
For Each dr In añoData
Dim fecha = dr.Field(Of DateTime)("Fecha")
Dim mesIndex = fecha.Month - 1
dataPoints.Add({mesIndex, dr("Total").ToString.ToDecimal()})
Next
seriesData.Add(New Dictionary(Of String, Object) From {
{"name", año.ToString},
{"data", dataPoints},
{"color", GetColorForYear(años.IndexOf(año))}
})
Next
Dim chartOptions = New With {
.chart = New With {.type = "line"},
.title = New With {.text = "Ventas Mensuales por Año"},
.xAxis = New With {
.type = "category",
.categories = mesesOrdenados,
.title = New With {.text = "Mes"}
},
.yAxis = New With {
.title = New With {.text = "Ventas (MXN)"},
.labels = New With {.format = "${value:,.0f}"}
},
.tooltip = New With {
.headerFormat = "<b>{series.name}</b><br/>",
.pointFormat = "Mes: <b>{point.category}</b><br/>Total: <b>${point.y:,.2f} MXN</b>"
},
.series = seriesData
}
Dim script = $"
Highcharts.chart('divVentasMensuales', {JsonConvert.SerializeObject(chartOptions)});
"
ScriptManager.RegisterStartupScript(Me, Me.GetType(), "graficaVentas", script, True)
End Sub
Private Sub CargarResumenSucursales(dt As DataTable)
If dt Is Nothing OrElse dt.Rows.Count = 0 Then
Return
End If
' Crear estructura para el GridView
Dim dtGrid = New DataTable()
dtGrid.Columns.Add("Sucursal", GetType(String))
dtGrid.Columns.Add("VentaAnual", GetType(Decimal))
dtGrid.Columns.Add("UtilidadAnual", GetType(Decimal))
dtGrid.Columns.Add("VentaMensual", GetType(Decimal))
dtGrid.Columns.Add("UtilidadMensual", GetType(Decimal))
' Solo agregar filas que no sean el total
For Each row As DataRow In dt.Rows
If row("Sucursal").ToString() <> "Total" Then
Dim newRow = dtGrid.NewRow()
newRow("Sucursal") = row("Sucursal")
newRow("VentaAnual") = If(IsDBNull(row("Año Actual")), 0D, row("Año Actual"))
newRow("UtilidadAnual") = If(IsDBNull(row("Utilidad")), 0D, row("Utilidad"))
newRow("VentaMensual") = If(IsDBNull(row("Mes Actual")), 0D, row("Mes Actual"))
newRow("UtilidadMensual") = If(IsDBNull(row("UtilidadMes")), 0D, row("UtilidadMes"))
dtGrid.Rows.Add(newRow)
End If
Next
gvResumenSucursales.DataSource = dtGrid
gvResumenSucursales.DataBind()
End Sub
Private Sub CargarVentasPorSucursal(dt As DataTable)
If dt Is Nothing OrElse dt.Rows.Count = 0 Then
Return
End If
Dim dtGrid = New DataTable()
dtGrid.Columns.Add("Sucursal", GetType(String))
dtGrid.Columns.Add("Año", GetType(Decimal))
dtGrid.Columns.Add("Mes", GetType(Decimal))
dtGrid.Columns.Add("Semana", GetType(Decimal))
dtGrid.Columns.Add("Día", GetType(Decimal))
For Each row As DataRow In dt.Rows
If row("Sucursal").ToString() <> "Total" Then
Dim nr = dtGrid.NewRow()
nr("Sucursal") = row("Sucursal")
nr("Año") = If(IsDBNull(row("Año Actual")), 0D, row("Año Actual"))
nr("Mes") = If(IsDBNull(row("Mes Actual")), 0D, row("Mes Actual"))
nr("Semana") = If(IsDBNull(row("Semana Actual")), 0D, row("Semana Actual"))
nr("Día") = If(IsDBNull(row("Vendido")), 0D, row("Vendido"))
dtGrid.Rows.Add(nr)
End If
Next
gvVentasPorSucursal.DataSource = dtGrid
gvVentasPorSucursal.DataBind()
End Sub
Private Sub CargarVentasPorVendedor(dt As DataTable)
If dt Is Nothing OrElse dt.Rows.Count = 0 Then
Return
End If
Dim dtGrid = New DataTable()
dtGrid.Columns.Add("Vendedor", GetType(String))
dtGrid.Columns.Add("Año", GetType(Decimal))
dtGrid.Columns.Add("Mes", GetType(Decimal))
dtGrid.Columns.Add("Semana", GetType(Decimal))
dtGrid.Columns.Add("Día", GetType(Decimal))
For Each row As DataRow In dt.Rows
If row("Vendedor").ToString() <> "Total" Then
Dim nr = dtGrid.NewRow()
nr("Vendedor") = row("Vendedor")
nr("Año") = If(IsDBNull(row("Año")), 0D, row("Año"))
nr("Mes") = If(IsDBNull(row("Mes")), 0D, row("Mes"))
nr("Semana") = If(IsDBNull(row("Semana")), 0D, row("Semana"))
nr("Día") = If(IsDBNull(row("Dia")), 0D, row("Dia"))
dtGrid.Rows.Add(nr)
End If
Next
gvVentasPorVendedor.DataSource = dtGrid
gvVentasPorVendedor.DataBind()
End Sub
Private Sub CargarVentasPorClasificacion(dt As DataTable)
If dt Is Nothing OrElse dt.Rows.Count = 0 Then
Return
End If
Dim dtGrid = New DataTable()
dtGrid.Columns.Add("Clasificacion", GetType(String))
dtGrid.Columns.Add("Año", GetType(Decimal))
dtGrid.Columns.Add("Mes", GetType(Decimal))
dtGrid.Columns.Add("Semana", GetType(Decimal))
dtGrid.Columns.Add("Día", GetType(Decimal))
For Each row As DataRow In dt.Rows
If row("Clasificacion").ToString() <> "Total" Then
Dim nr = dtGrid.NewRow()
nr("Clasificacion") = row("Clasificacion")
nr("Año") = If(IsDBNull(row("Año")), 0D, row("Año"))
nr("Mes") = If(IsDBNull(row("Mes")), 0D, row("Mes"))
nr("Semana") = If(IsDBNull(row("Semana")), 0D, row("Semana"))
nr("Día") = If(IsDBNull(row("Dia")), 0D, row("Dia"))
dtGrid.Rows.Add(nr)
End If
Next
gvVentasPorClasificacion.DataSource = dtGrid
gvVentasPorClasificacion.DataBind()
End Sub
Private Sub CargarVentasPorMarca(dt As DataTable)
If dt Is Nothing OrElse dt.Rows.Count = 0 Then
Return
End If
Dim dtGrid = New DataTable()
dtGrid.Columns.Add("Marca", GetType(String))
dtGrid.Columns.Add("Año", GetType(Decimal))
dtGrid.Columns.Add("Mes", GetType(Decimal))
dtGrid.Columns.Add("Semana", GetType(Decimal))
dtGrid.Columns.Add("Día", GetType(Decimal))
For Each row As DataRow In dt.Rows
If row("Marca").ToString() <> "Total" Then
Dim nr = dtGrid.NewRow()
nr("Marca") = row("Marca")
nr("Año") = If(IsDBNull(row("Año")), 0D, row("Año"))
nr("Mes") = If(IsDBNull(row("Mes")), 0D, row("Mes"))
nr("Semana") = If(IsDBNull(row("Semana")), 0D, row("Semana"))
nr("Día") = If(IsDBNull(row("Dia")), 0D, row("Dia"))
dtGrid.Rows.Add(nr)
End If
Next
gvVentasPorMarca.DataSource = dtGrid
gvVentasPorMarca.DataBind()
End Sub
Private Sub CargarVentasPorPS(dt As DataTable)
If dt Is Nothing OrElse dt.Rows.Count = 0 Then
Return
End If
Dim dtGrid = New DataTable()
dtGrid.Columns.Add("ProductoServicio", GetType(String))
dtGrid.Columns.Add("Año", GetType(Decimal))
dtGrid.Columns.Add("Mes", GetType(Decimal))
dtGrid.Columns.Add("Semana", GetType(Decimal))
dtGrid.Columns.Add("Día", GetType(Decimal))
For Each row As DataRow In dt.Rows
If row("ProductoServicio").ToString() <> "Total" Then
Dim nr = dtGrid.NewRow()
nr("ProductoServicio") = row("ProductoServicio")
nr("Año") = If(IsDBNull(row("Año")), 0D, row("Año"))
nr("Mes") = If(IsDBNull(row("Mes")), 0D, row("Mes"))
nr("Semana") = If(IsDBNull(row("Semana")), 0D, row("Semana"))
nr("Día") = If(IsDBNull(row("Dia")), 0D, row("Dia"))
dtGrid.Rows.Add(nr)
End If
Next
gvVentasPorPS.DataSource = dtGrid
gvVentasPorPS.DataBind()
End Sub
Private Sub CargarVentasPorCliente(dt As DataTable)
If dt Is Nothing OrElse dt.Rows.Count = 0 Then
Return
End If
Dim dtGrid = New DataTable()
dtGrid.Columns.Add("NombreCliente", GetType(String))
dtGrid.Columns.Add("Año", GetType(Decimal))
dtGrid.Columns.Add("Mes", GetType(Decimal))
dtGrid.Columns.Add("Semana", GetType(Decimal))
dtGrid.Columns.Add("Día", GetType(Decimal))
For Each row As DataRow In dt.Rows
If row("NombreCliente").ToString() <> "Total" Then
Dim nr = dtGrid.NewRow()
nr("NombreCliente") = row("NombreCliente")
nr("Año") = If(IsDBNull(row("Año")), 0D, row("Año"))
nr("Mes") = If(IsDBNull(row("Mes")), 0D, row("Mes"))
nr("Semana") = If(IsDBNull(row("Semana")), 0D, row("Semana"))
nr("Día") = If(IsDBNull(row("Dia")), 0D, row("Dia"))
dtGrid.Rows.Add(nr)
End If
Next
gvVentasPorCliente.DataSource = dtGrid
gvVentasPorCliente.DataBind()
End Sub
Private Sub CargarVentasPorProveedor(dt As DataTable)
If dt Is Nothing OrElse dt.Rows.Count = 0 Then
Return
End If
Dim dtGrid = New DataTable()
dtGrid.Columns.Add("NombreProveedor", GetType(String))
dtGrid.Columns.Add("Año", GetType(Decimal))
dtGrid.Columns.Add("Mes", GetType(Decimal))
dtGrid.Columns.Add("Semana", GetType(Decimal))
dtGrid.Columns.Add("Día", GetType(Decimal))
For Each row As DataRow In dt.Rows
If row("NombreProveedor").ToString() <> "Total" Then
Dim nr = dtGrid.NewRow()
nr("NombreProveedor") = row("NombreProveedor")
nr("Año") = If(IsDBNull(row("Año")), 0D, row("Año"))
nr("Mes") = If(IsDBNull(row("Mes")), 0D, row("Mes"))
nr("Semana") = If(IsDBNull(row("Semana")), 0D, row("Semana"))
nr("Día") = If(IsDBNull(row("Dia")), 0D, row("Dia"))
dtGrid.Rows.Add(nr)
End If
Next
gvVentasPorProveedor.DataSource = dtGrid
gvVentasPorProveedor.DataBind()
End Sub
Private Function ObtenerMesesOrdenados() As List(Of String)
Return CultureInfo.CurrentCulture.DateTimeFormat.MonthNames _
.Take(12) _
.Select(Function(m) m) _
.ToList()
End Function
Private Function GetColorForYear(index As Integer) As String
' Paleta de colores para las series
Dim colors = {"#3598dc", "#32c5d2", "#8e44ad", "#e7505a", "#1bbc9b", "#f3c200"}
Return colors(index Mod colors.Length)
End Function
Private Sub MuestraIndicador(DIV As HtmlGenericControl, Color As String, Icono As String, Titulo As String, Comentario As String, Link As String, TitleComentario As String)
Dim htmldiv As New StringBuilder
htmldiv.AppendFormat("{0}<div class='col-lg-4 col-md-4 col-sm-6 col-xs-12'><div class='dashboard-stat {1}'><div class='visual'><i class='{2}' '=''></i></div>", DIV.InnerHtml, Color, Icono)
htmldiv.AppendFormat("{0}<div class='col-lg-6 col-md-4 col-sm-6 col-xs-12'><div class='dashboard-stat {1}'><div class='visual'><i class='{2}' '=''></i></div>", DIV.InnerHtml, Color, Icono)
htmldiv.AppendFormat("<div class='details'><div class='number'>{0}</div><div class='desc'><label class='indicadortipo1 tooltips' data-original-title='{1}'>{2}", Titulo, TitleComentario, Comentario)
htmldiv.AppendFormat("</label></div></div><a class='more' href='{0}'>Ver Más <i class='m-icon-swapright m-icon-white'></i></a></div></div>", Link)
DIV.InnerHtml = htmldiv.ToString
End Sub
Private Sub MuestraIndicador(DIV As HtmlGenericControl, Color As String, Icono As String, Titulo As String, C1 As String, CL1 As String, CT1 As String, C2 As String, CL2 As String, CT2 As String)
Dim htmldiv As New StringBuilder
htmldiv.AppendFormat("{0}<div class='col-lg-4 col-md-4 col-sm-6 col-xs-12'><div class='dashboard-stat {1}'><div class='visual'><i class='{2}' '=''></i></div>", DIV.InnerHtml, Color, Icono)
htmldiv.AppendFormat("{0}<div class='col-lg-6 col-md-4 col-sm-6 col-xs-12'><div class='dashboard-stat {1}'><div class='visual'><i class='{2}' '=''></i></div>", DIV.InnerHtml, Color, Icono)
htmldiv.AppendFormat("<div class='details'><div class='number'>{0}</div><div class='desc'>", Titulo)
htmldiv.AppendFormat("<label class='indicadortipo2 col-md-6 tooltips' data-original-title='{0}'>{1}</label>", CT1, C1)
htmldiv.AppendFormat("<label class='indicadortipo2 col-md-6 tooltips' data-original-title='{0}'>{1}</label>", CT2, C2)
@@ -77,7 +453,7 @@ Partial Class General_Dashboard
End Sub
Private Sub MuestraIndicador(DIV As HtmlGenericControl, Color As String, Icono As String, Titulo As String, C1 As String, CL1 As String, CT1 As String, C2 As String, CL2 As String, CT2 As String, C3 As String, CL3 As String, CT3 As String)
Dim htmldiv As New StringBuilder
htmldiv.AppendFormat("{0}<div class='col-lg-4 col-md-4 col-sm-6 col-xs-12'><div class='dashboard-stat {1}'><div class='visual'><i class='{2}' '=''></i></div>", DIV.InnerHtml, Color, Icono)
htmldiv.AppendFormat("{0}<div class='col-lg-6 col-md-4 col-sm-6 col-xs-12'><div class='dashboard-stat {1}'><div class='visual'><i class='{2}' '=''></i></div>", DIV.InnerHtml, Color, Icono)
htmldiv.AppendFormat("<div class='details'><div class='number'>{0}</div><div class='desc'><label class='indicadortipo4 col-md-6 tooltips' data-original-title=''></label>", Titulo)
htmldiv.AppendFormat("<label class='indicadortipo4 col-md-6 tooltips' data-original-title='{0}'>{1}</label>", CT1, C1)
htmldiv.AppendFormat("<label class='indicadortipo4 col-md-6 tooltips' data-original-title='{0}'>{1}</label>", CT2, C2)
@@ -89,7 +465,7 @@ Partial Class General_Dashboard
End Sub
Private Sub MuestraIndicador(DIV As HtmlGenericControl, Color As String, Icono As String, Titulo As String, C1 As String, CL1 As String, CT1 As String, C2 As String, CL2 As String, CT2 As String, C3 As String, CL3 As String, CT3 As String, C4 As String, CL4 As String, CT4 As String)
Dim htmldiv As New StringBuilder
htmldiv.AppendFormat("{0}<div class='col-lg-4 col-md-4 col-sm-6 col-xs-12'><div class='dashboard-stat {1}'><div class='visual'><i class='{2}' '=''></i></div>", DIV.InnerHtml, Color, Icono)
htmldiv.AppendFormat("{0}<div class='col-lg-6 col-md-4 col-sm-6 col-xs-12'><div class='dashboard-stat {1}'><div class='visual'><i class='{2}' '=''></i></div>", DIV.InnerHtml, Color, Icono)
htmldiv.AppendFormat("<div class='details'><div class='number'>{0}</div><div class='desc'><label class='indicadortipo4 col-md-6 tooltips' data-original-title='{1}'>{2}</label>", Titulo, CT1, C1)
htmldiv.AppendFormat("<label class='indicadortipo4 col-md-6 tooltips' data-original-title='{0}'>{1}</label>", CT2, C2)
htmldiv.AppendFormat("<label class='indicadortipo4 col-md-6 tooltips' data-original-title='{0}'>{1}</label>", CT3, C3)