Merge branch 'master' of http://192.168.10.111:8383/SIG
This commit is contained in:
@@ -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
|
||||
|
||||
@@ -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
|
||||
|
||||
@@ -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
@@ -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)
|
||||
|
||||
Reference in New Issue
Block a user