383 lines
18 KiB
VB.net
383 lines
18 KiB
VB.net
Imports System.Data
|
|
Imports Extensiones
|
|
Imports GemBox.Spreadsheet
|
|
|
|
Partial Class CatMetasVendedores
|
|
Inherits ClsPaginas
|
|
Private Property CveMetaVendedor() As Integer 'Guardamos el ID de registro para saber cual registro Editar
|
|
Get
|
|
Return If(IsNothing(ViewState("CveMetaVendedor")), -1, CInt(ViewState("CveMetaVendedor")))
|
|
End Get
|
|
Set
|
|
ViewState("CveMetaVendedor") = Value
|
|
End Set
|
|
End Property
|
|
|
|
Private Property DtDatos() As DataTable
|
|
Get
|
|
Return CType(ViewState("DtDatos"), DataTable)
|
|
End Get
|
|
Set
|
|
ViewState("DtDatos") = Value
|
|
End Set
|
|
End Property
|
|
|
|
Protected Sub Page_Load(sender As Object, e As System.EventArgs) Handles Me.Load
|
|
If Not IsPostBack Then
|
|
txtMesAnio.Text = NowADS().FirstDayOfMonth.ToShortDateString
|
|
CargaDatosModal()
|
|
CargaCombos()
|
|
CargaDatos()
|
|
End If
|
|
End Sub
|
|
|
|
Private Sub CargaDatos()
|
|
Dim Mes As Integer = -1, Anio As Integer = -1
|
|
If Not String.IsNullOrEmpty(txtMesAnio.Text) Then
|
|
Dim FechaRef As DateTime = txtMesAnio.Text.ToDate()
|
|
Mes = FechaRef.Month
|
|
Anio = FechaRef.Year
|
|
End If
|
|
|
|
Dim ObjVentas As New ClsVentas
|
|
If ObjVentas.GetMetasVendedores(UsuarioActual.CveEmpresa, CveSubProyecto:=DdlSubProyecto.SelectedValue.ToEntero(), CveVendedor:=DdlVendedor.SelectedValue.ToEntero(), CveMarca:=DdlMarca.SelectedValue.ToEntero(), Mes:=Mes, Anio:=Anio) Then
|
|
GvDatos.DataSource = ObjVentas.DtResultados
|
|
DtDatos = ObjVentas.DtResultados
|
|
End If
|
|
ObjVentas.Dispose()
|
|
GvDatos.DataBind()
|
|
End Sub
|
|
|
|
Private Sub CargaCombos()
|
|
DdlSubProyecto.DataSource = GlobalDTSubProyectosUsuarios(UsuarioActual.CveUsuario, -1, UsuarioActual.CveEmpresa)
|
|
DdlSubProyecto.DataBind()
|
|
DdlSubProyecto.Items.Insert(0, New ListItem("Todas", "-1"))
|
|
|
|
DdlVendedor.DataSource = GlobalDTVendedores(UsuarioActual.CveEmpresa)
|
|
DdlVendedor.DataBind()
|
|
DdlVendedor.Items.Insert(0, New ListItem("Todos", "-1"))
|
|
|
|
DdlMarca.DataSource = GlobalDTGralMarcas(UsuarioActual.CveEmpresa)
|
|
DdlMarca.DataBind()
|
|
DdlMarca.Items.Insert(0, New ListItem("Todas", "-1"))
|
|
|
|
|
|
End Sub
|
|
|
|
Private Sub CargaDatosModal()
|
|
DdlVendedores.DataSource = GlobalDTVendedores(UsuarioActual.CveEmpresa)
|
|
DdlVendedores.DataBind()
|
|
DdlVendedores.Items.Insert(0, New ListItem("Seleccionar", "-1"))
|
|
|
|
Dim ObjPS As New ClsProductosServicios
|
|
If ObjPS.GetMarcas(UsuarioActual.CveEmpresa) Then
|
|
DdlMarcas.DataSource = ObjPS.DtResultados
|
|
End If
|
|
ObjPS.Dispose()
|
|
DdlMarcas.DataBind()
|
|
DdlMarcas.Items.Insert(0, New ListItem("Todos", "-1"))
|
|
|
|
DdlClasificacionSup.DataSource = GlobalDTClasificaciones(UsuarioActual.CveEmpresa)
|
|
DdlClasificacionSup.DataBind()
|
|
DdlClasificacionSup.Items.Insert(0, New ListItem("Todos", "-1"))
|
|
|
|
DdlClasificacion.DataSource = GlobalDTClasificaciones2(UsuarioActual.CveEmpresa)
|
|
DdlClasificacion.DataBind()
|
|
DdlClasificacion.Items.Insert(0, New ListItem("Todos", "-1"))
|
|
|
|
End Sub
|
|
|
|
Protected Sub LnkAgregar_Click() Handles LnkAgregar.Click
|
|
RegistraScript(String.Format("$('#{0}').modal();", "DivAgregarTiposD"))
|
|
End Sub
|
|
|
|
Protected Sub BtnAgregarMetaVendedor_Click(sender As Object, e As EventArgs) Handles BtnAgregarMetaVendedor.Click
|
|
|
|
If DdlVendedores.SelectedValue.ToEntero > 0 AndAlso TxtFechaI.Text <> "" AndAlso DdlMarcas.SelectedValue.ToEntero > 0 AndAlso DdlClasificacionSup.SelectedValue.ToEntero > 0 Then
|
|
|
|
Dim ObjVentas As New ClsVentas
|
|
If BtnAgregarMetaVendedor.Text = "Agregar" Then
|
|
If ObjVentas.AddMetasVendedores(DdlVendedores.SelectedValue.ToEntero, TxtFechaI.Text.ToDate, DdlMarcas.SelectedValue.ToEntero, TxtMetaCantidad.Text.ToEntero,
|
|
TxtMetaImporte.Text.ToDecimal, DdlClasificacion.SelectedValue.ToEntero, DdlClasificacionSup.SelectedValue.ToEntero, UsuarioActual.CveEmpresa) Then
|
|
Alert("Se agregó la meta al vendedor")
|
|
Else
|
|
Alert("No se pudo agregar la meta al vendedor", TipoMensaje.MsgError)
|
|
End If
|
|
ElseIf BtnAgregarMetaVendedor.Text = "Actualizar" Then
|
|
If ObjVentas.UpdateMetasVendedores(CveMetaVendedor, DdlVendedores.SelectedValue.ToEntero, TxtFechaI.Text, DdlMarcas.SelectedValue.ToEntero,
|
|
TxtMetaCantidad.Text.ToEntero, TxtMetaImporte.Text.ToDecimal, DdlClasificacion.SelectedValue.ToEntero,
|
|
DdlClasificacionSup.SelectedValue.ToEntero) Then
|
|
Alert("Se actualizó la información de la meta del vendedor")
|
|
Else
|
|
Alert("No se pudo actualizar la meta del vendedor", TipoMensaje.MsgError)
|
|
End If
|
|
End If
|
|
Else
|
|
Alert(String.Format("Falta Seleccionar {0}{1}{2}", If(DdlVendedores.SelectedValue.ToEntero > 0, "", "Vendedor, "), If(DdlMarcas.SelectedValue.ToEntero > 0, "", "Marca, "), If(TxtFechaI.Text <> "", "", "Fecha, ")))
|
|
End If
|
|
RegistraScript(String.Format("$('#{0}').modal('hide');", "DivAgregarTiposD"))
|
|
ResetDatosSeleccionadosModal()
|
|
CargaDatos()
|
|
UpDatos.Update()
|
|
End Sub
|
|
|
|
Private Sub ResetDatosSeleccionadosModal()
|
|
DdlVendedores.SelectedValue = "-1"
|
|
TxtFechaI.Text = ""
|
|
DdlMarcas.SelectedValue = "-1"
|
|
TxtMetaCantidad.Text = ""
|
|
TxtMetaImporte.Text = ""
|
|
UpModalTiposD.Update()
|
|
End Sub
|
|
|
|
Public Sub GvDatos_RowEditing(sender As Object, e As EventArgs)
|
|
BtnAgregarMetaVendedor.Text = "Actualizar"
|
|
Dim GvRow As GridViewRow = DirectCast(DirectCast(sender, LinkButton).NamingContainer, GridViewRow)
|
|
CveMetaVendedor = GvRow.DataKey("CveMeta").ToEntero
|
|
DdlVendedores.SelectedValue = GvRow.DataKey("CveVendedor")
|
|
TxtFechaI.Text = GvRow.DataKey("MesAño")
|
|
|
|
DdlClasificacionSup.SelectedValueExist(GvRow.DataKey("CveClasificacionSup"))
|
|
DdlClasificacion.SelectedValueExist(GvRow.DataKey("CveClasificacion"))
|
|
|
|
DdlMarcas.SelectedValue = GvRow.DataKey("CveMarca")
|
|
TxtMetaCantidad.Text = GvRow.DataKey("MetaCantidad")
|
|
TxtMetaImporte.Text = GvRow.DataKey("MetaImporte")
|
|
UpModalTiposD.Update()
|
|
RegistraScript(String.Format("$('#{0}').modal();", "DivAgregarTiposD"))
|
|
End Sub
|
|
|
|
Public Sub Delete_Click(sender As Object, e As EventArgs)
|
|
Dim GvRow As GridViewRow = DirectCast(DirectCast(sender, LinkButton).NamingContainer, GridViewRow)
|
|
Dim CveMetaEliminar As Integer = GvRow.DataKey("CveMeta").ToEntero
|
|
Dim ObjVentas As New ClsVentas
|
|
If ObjVentas.RemoveMetasVendedores(CveMetaEliminar) Then
|
|
Alert("Meta eliminada exitosamente")
|
|
End If
|
|
ObjVentas.Dispose()
|
|
CargaDatos()
|
|
UpDatos.Update()
|
|
End Sub
|
|
Protected Sub BtnConsultar_Click(sender As Object, e As EventArgs)
|
|
CargaDatos()
|
|
UpDatos.Update()
|
|
End Sub
|
|
|
|
Private Sub BtnDescargarFormato_Click(sender As Object, e As EventArgs) Handles BtnDescargarFormato.Click
|
|
|
|
Dim DtExcel As New DataTable
|
|
DtExcel.TableName = "Metas"
|
|
DtExcel.Columns.Add(New DataColumn("Vendedor", GetType(String)))
|
|
DtExcel.Columns.Add(New DataColumn("Clasificación Superior", GetType(String)))
|
|
DtExcel.Columns.Add(New DataColumn("Clasificación", GetType(String)))
|
|
DtExcel.Columns.Add(New DataColumn("Marca", GetType(String)))
|
|
DtExcel.Columns.Add(New DataColumn("Mes", GetType(String)))
|
|
DtExcel.Columns.Add(New DataColumn("Año", GetType(String)))
|
|
DtExcel.Columns.Add(New DataColumn("Cantidad", GetType(Decimal)))
|
|
DtExcel.Columns.Add(New DataColumn("Importe", GetType(Decimal)))
|
|
DtExcel.Columns.Add(New DataColumn("Ventas", GetType(Decimal)))
|
|
|
|
Dim dttE As DataTable = DtDatos.Copy
|
|
dttE.TableName = "Metas"
|
|
For Each drr As DataRow In DtDatos.Rows
|
|
Dim dr As DataRow = DtExcel.NewRow
|
|
dr("Vendedor") = drr("Vendedor")
|
|
dr("Clasificación Superior") = drr("ClasificacionSup")
|
|
dr("Clasificación") = drr("Clasificacion")
|
|
dr("Marca") = drr("Marca")
|
|
dr("Cantidad") = drr("MetaCantidad")
|
|
dr("Importe") = drr("MetaImporte")
|
|
dr("Mes") = drr("MesAño").ToString.ToDate.Year
|
|
dr("Año") = drr("MesAño").ToString.ToDate.Month
|
|
dr("Ventas") = drr("VentaCantidad")
|
|
|
|
DtExcel.Rows.Add(dr)
|
|
Next
|
|
SpreadsheetInfo.SetLicense(ModExtensiones.SerialGemBoxSpreadsheet)
|
|
Dim FileExcel As New ExcelFile()
|
|
|
|
Dim worksheet = FileExcel.Worksheets.Add(DtExcel.TableName)
|
|
worksheet.InsertDataTable(DtExcel, New InsertDataTableOptions() With
|
|
{
|
|
.ColumnHeaders = True,
|
|
.StartRow = 0,
|
|
.StartColumn = 0
|
|
})
|
|
worksheet.Rows(0).Style.FillPattern.SetPattern(FillPatternStyle.Solid, SpreadsheetColor.FromArgb(75, 119, 190), SpreadsheetColor.FromArgb(255, 255, 255))
|
|
worksheet.Rows(0).Style.Font.Color = SpreadsheetColor.FromArgb(255, 255, 255)
|
|
|
|
Dim columnCount = worksheet.CalculateMaxUsedColumns()
|
|
For i = 0 To columnCount
|
|
worksheet.Columns(i).AutoFit(1, worksheet.Rows(0), worksheet.Rows(worksheet.Rows.Count - 1))
|
|
Next
|
|
|
|
worksheet.Cells.Style.Locked = False
|
|
worksheet.Cells.Style.FormulaHidden = False
|
|
|
|
worksheet.Rows(0).Cells.Style.Locked = True
|
|
|
|
worksheet.Protected = True
|
|
|
|
Dim protectionSettings = worksheet.ProtectionSettings
|
|
protectionSettings.AllowDeletingColumns = False
|
|
protectionSettings.AllowDeletingRows = True
|
|
protectionSettings.AllowEditingObjects = True
|
|
protectionSettings.AllowEditingScenarios = True
|
|
protectionSettings.AllowFormattingCells = True
|
|
protectionSettings.AllowFormattingColumns = True
|
|
protectionSettings.AllowFormattingRows = True
|
|
protectionSettings.AllowInsertingColumns = False
|
|
protectionSettings.AllowInsertingRows = True
|
|
protectionSettings.AllowSelectingLockedCells = True
|
|
protectionSettings.AllowSelectingUnlockedCells = True
|
|
protectionSettings.AllowSelectingUnlockedCells = True
|
|
protectionSettings.AllowSorting = True
|
|
protectionSettings.AllowUsingAutoFilter = True
|
|
protectionSettings.AllowUsingPivotTableReports = True
|
|
protectionSettings.SetPassword(ModExtensiones.IMEI)
|
|
|
|
FileExcel.Save(Response, "Metas.xlsx", SaveOptions.XlsxDefault)
|
|
|
|
End Sub
|
|
|
|
Private Sub BtnCargaExcel_Click(sender As Object, e As EventArgs) Handles BtnCargaExcel.Click
|
|
If TxtExcel.getfiles().Archivos.Count > 0 Then
|
|
Dim file As Archivo = TxtExcel.getfiles().Archivos(0)
|
|
Dim Directorio As String = AppDomain.CurrentDomain.BaseDirectory & file.path
|
|
CargarArchivo(Directorio, file.filename)
|
|
Else
|
|
Alert("No existe el archivo. Favor de subir un archivo excel a la plataforma.", TipoMensaje.MsgError)
|
|
End If
|
|
End Sub
|
|
Private Sub CargarArchivo(Ruta As String, FileName As String)
|
|
SpreadsheetInfo.SetLicense(ModExtensiones.SerialGemBoxSpreadsheet)
|
|
Dim Tipo As String = "EXCEL"
|
|
Dim dt As DataTable = Nothing
|
|
Dim ErrorArchivo = False
|
|
|
|
Try
|
|
dt = ReadExcelFile(Ruta + FileName, True)
|
|
Catch ex As Exception
|
|
ErrorArchivo = True
|
|
OnError("Ocurrio un error al leer el archivo <br/>" & ex.Message, ex)
|
|
End Try
|
|
If Not ErrorArchivo AndAlso dt IsNot Nothing Then
|
|
|
|
If Not dt.Columns(0).ColumnName = "Vendedor" Then
|
|
Alert("El nombre de la primera columna debe ser 'Vendedor'. Favor de corregirlo", TipoMensaje.MsgError)
|
|
Exit Sub
|
|
End If
|
|
If Not dt.Columns(1).ColumnName = "Clasificación Superior" Then
|
|
Alert("El nombre de la segunda columna debe ser 'Clasificación Superior'. Favor de corregirlo", TipoMensaje.MsgError)
|
|
Exit Sub
|
|
End If
|
|
If Not dt.Columns(2).ColumnName = "Clasificación" Then
|
|
Alert("El nombre de la tercera columna debe ser 'Clasificación'. Favor de corregirlo", TipoMensaje.MsgError)
|
|
Exit Sub
|
|
End If
|
|
If Not dt.Columns(3).ColumnName = "Marca" Then
|
|
Alert("El nombre de la cuarta columna debe ser 'Marca'. Favor de corregirlo", TipoMensaje.MsgError)
|
|
Exit Sub
|
|
End If
|
|
If Not dt.Columns(4).ColumnName = "Mes" Then
|
|
Alert("El nombre de la quinta columna debe ser 'Marca'. Favor de corregirlo", TipoMensaje.MsgError)
|
|
Exit Sub
|
|
End If
|
|
If Not dt.Columns(5).ColumnName = "Año" Then
|
|
Alert("El nombre de la sexta columna debe ser 'Año'. Favor de corregirlo", TipoMensaje.MsgError)
|
|
Exit Sub
|
|
End If
|
|
If Not dt.Columns(6).ColumnName = "Cantidad" Then
|
|
Alert("El nombre de la sexta columna debe ser 'Cantidad'. Favor de corregirlo", TipoMensaje.MsgError)
|
|
Exit Sub
|
|
End If
|
|
If Not dt.Columns(7).ColumnName = "Importe" Then
|
|
Alert("El nombre de la septima columna debe ser 'Importe'. Favor de corregirlo", TipoMensaje.MsgError)
|
|
Exit Sub
|
|
End If
|
|
Dim DtMarcas As DataTable = Nothing
|
|
Dim ObjMarcas As New ClsProductosServicios
|
|
If ObjMarcas.GetMarcas(UsuarioActual.CveEmpresa) Then
|
|
DtMarcas = ObjMarcas.DtResultados.Copy()
|
|
End If
|
|
ObjMarcas.Dispose()
|
|
|
|
dt.TableName = "Datos"
|
|
Dim ProductosNoCargados As New StringBuilder()
|
|
Dim RowsCargados As Integer = 0
|
|
Dim RowsNoCargados As Integer = 0
|
|
Dim ObjMetas As New ClsVentas
|
|
Dim Correcto As Boolean = True
|
|
ObjMetas.IniciaTransacSQL()
|
|
Try
|
|
Dim DtVendedores As DataTable = GlobalDTVendedores(UsuarioActual.CveEmpresa, Estatus:=-1, VendedorTipo:=-1)
|
|
Dim DtClasificaciones As DataTable = GlobalDTClasificaciones(UsuarioActual.CveEmpresa)
|
|
Dim DtClasificaciones2 As DataTable = GlobalDTClasificaciones2(UsuarioActual.CveEmpresa)
|
|
|
|
|
|
For Each row As DataRow In dt.Rows
|
|
|
|
If Correcto Then
|
|
Dim TieneError As Boolean = False
|
|
Dim CveVendedor As Integer = DtVendedores.FiltroPrimeroValor("CveVendedor", String.Format("trim(Vendedor) LIKE '%{0}%'", row("Vendedor").ToString().TrimStart().TrimEnd().ToUpper)).ToEntero
|
|
Dim CveClasificacion As Integer = DtClasificaciones.FiltroPrimeroValor("CveClasificacion", String.Format("trim(Clasificacion)='{0}'", row("Clasificación Superior").ToString().TrimStart().TrimEnd())).ToEntero
|
|
Dim CveClasificacion2 As Integer = DtClasificaciones2.FiltroPrimeroValor("CveClasificacion", String.Format("trim(Clasificacion)='{0}'", row("Clasificación").ToString().TrimStart().TrimEnd())).ToEntero
|
|
Dim CveMarca As Integer = DtMarcas.FiltroPrimeroValor("CveMarca", String.Format("Marca='{0}'", row("Marca").ToString().TrimStart().TrimEnd())).ToEntero
|
|
|
|
Dim Mes As Integer = row("Mes").ToString().ToEntero()
|
|
Dim Anio As Integer = row("Año").ToString().ToEntero()
|
|
Dim Cantidad As Decimal = row("Cantidad").ToString().ToDecimal()
|
|
Dim Importe As Decimal = row("Importe").ToString().ToDecimal()
|
|
|
|
Dim FechaRef As New DateTime(Anio, Mes, 1)
|
|
If CveVendedor > 0 AndAlso CveVendedor > 0 AndAlso CveClasificacion > 0 AndAlso CveClasificacion2 > 0 AndAlso CveMarca > 0 Then
|
|
Correcto = ObjMetas.AddMetasVendedores(CveVendedor, FechaRef, CveMarca, Cantidad, Importe, CveClasificacion2, CveClasificacion, UsuarioActual.CveEmpresa)
|
|
If Correcto Then
|
|
RowsCargados += 1
|
|
End If
|
|
Else
|
|
Correcto = False
|
|
End If
|
|
|
|
If Not Correcto Then
|
|
RowsNoCargados += 1
|
|
End If
|
|
End If
|
|
|
|
Next
|
|
Catch ex As Exception
|
|
OnError("Ocurrió un error al cargar las metas.", ex)
|
|
Finally
|
|
Dim MensajeFinal As New StringBuilder()
|
|
|
|
If Correcto Then
|
|
ObjMetas.Commit()
|
|
If RowsNoCargados = 0 AndAlso RowsCargados > 0 Then
|
|
MensajeFinal.Append("Las metas se cargaron correctamente. <br/><br/>")
|
|
End If
|
|
If RowsCargados > 0 Then
|
|
MensajeFinal.Append("Se cargaron <b>" & RowsCargados & "</b> metas correctamente.")
|
|
End If
|
|
If RowsNoCargados > 0 Then
|
|
MensajeFinal.Append("No se pudieron actualizar <b>" & RowsNoCargados & "</b> metas. <br/>")
|
|
End If
|
|
|
|
Alert(MensajeFinal.ToString())
|
|
Else
|
|
ObjMetas.RollBack()
|
|
If RowsNoCargados > 0 Then
|
|
MensajeFinal.Append("No se pudieron actualizar <b>" & RowsNoCargados & "</b> metas. <br/>")
|
|
End If
|
|
Alert(MensajeFinal.ToString())
|
|
End If
|
|
|
|
|
|
|
|
|
|
End Try
|
|
|
|
End If
|
|
End Sub
|
|
|
|
End Class
|