389 lines
18 KiB
VB.net
389 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
|
|
|
|
Protected Sub Page_Load(sender As Object, e As System.EventArgs) Handles Me.Load
|
|
If Not IsPostBack Then
|
|
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
|
|
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"))
|
|
|
|
Dim ObjPS As New ClsProductosServicios
|
|
If ObjPS.GetMarcas(UsuarioActual.CveEmpresa) Then
|
|
DdlMarca.DataSource = ObjPS.DtResultados
|
|
End If
|
|
ObjPS.Dispose()
|
|
|
|
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, DdlMarcas.SelectedValue.ToEntero, TxtMetaCantidad.Text.ToEntero,
|
|
TxtMetaImporte.Text.ToDecimal, DdlClasificacion.SelectedValue.ToEntero, DdlClasificacionSup.SelectedValue.ToEntero) 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)))
|
|
|
|
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.patch
|
|
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
|
|
'ObjPS.IniciaTransacSQL()
|
|
Try
|
|
Dim DtVendedores As DataTable = GlobalDTVendedores(UsuarioActual.CveEmpresa)
|
|
Dim DtClasificaciones As DataTable = GlobalDTClasificaciones(UsuarioActual.CveEmpresa)
|
|
Dim DtClasificaciones2 As DataTable = GlobalDTClasificaciones2(UsuarioActual.CveEmpresa)
|
|
|
|
For Each row As DataRow In dt.Rows
|
|
Dim Correcto As Boolean = False
|
|
Dim TieneError As Boolean = False
|
|
Dim CveVendedor As Integer = DtVendedores.FiltroPrimeroValor("CveVendedor", String.Format("Vendedor LIKE '%{0}%'", row("Vendedor").ToString().TrimStart().TrimEnd())).ToEntero
|
|
Dim CveClasificacion As Integer = DtClasificaciones.FiltroPrimeroValor("CveClasificacion", String.Format("Clasificacion='{0}'", row("Clasificación Superior").ToString().TrimStart().TrimEnd())).ToEntero
|
|
Dim CveClasificacion2 As Integer = DtClasificaciones2.FiltroPrimeroValor("CveClasificacion", String.Format("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 Decimal = row("Mes").ToString().ToDecimal()
|
|
Dim Anio As Decimal = row("Año").ToString().ToDecimal()
|
|
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)
|
|
If Correcto Then
|
|
RowsCargados += 1
|
|
End If
|
|
End If
|
|
|
|
If Not Correcto Then
|
|
RowsNoCargados += 1
|
|
End If
|
|
Next
|
|
Catch ex As Exception
|
|
OnError("Ocurrió un error al cargar los precios.", ex)
|
|
Finally
|
|
ObjMarcas.Dispose()
|
|
|
|
Dim MensajeFinal As New StringBuilder()
|
|
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())
|
|
|
|
End Try
|
|
|
|
End If
|
|
End Sub
|
|
|
|
Private Function ReadExcelFile(ByVal flatFilePath As String, ByVal firstRowHasHeaders As Boolean) As DataTable
|
|
SpreadsheetInfo.SetLicense(ModExtensiones.SerialGemBoxSpreadsheet)
|
|
Dim excelFile As ExcelFile = ExcelFile.Load(flatFilePath)
|
|
|
|
Dim unnamed As Integer = 0
|
|
Dim cols As Integer
|
|
Dim columns As String()
|
|
Dim curRow As Integer = 0
|
|
Dim curCol As Integer = 0
|
|
Dim dataTable As DataTable = New DataTable()
|
|
Dim worksheet As ExcelWorksheet = excelFile.Worksheets(0)
|
|
|
|
For cols = 0 To worksheet.Rows(0).AllocatedCells.Count - 1
|
|
|
|
If firstRowHasHeaders Then
|
|
|
|
If worksheet.Rows(0).Cells(cols).Value IsNot Nothing Then
|
|
dataTable.Columns.Add(worksheet.Rows(0).Cells(cols).Value.ToString())
|
|
Else
|
|
dataTable.Columns.Add("Unnamed Column " & (System.Threading.Interlocked.Increment(unnamed)))
|
|
End If
|
|
|
|
curRow = 1
|
|
Else
|
|
dataTable.Columns.Add("Column " & (cols + 1))
|
|
End If
|
|
Next
|
|
|
|
While curRow < worksheet.Rows.Count
|
|
columns = New String(cols - 1) {}
|
|
|
|
For curCol = 0 To cols - 1
|
|
|
|
If worksheet.Rows(curRow).Cells(curCol).Value Is Nothing Then
|
|
columns(curCol) = ""
|
|
Else
|
|
columns(curCol) = worksheet.Rows(curRow).Cells(curCol).Value.ToString()
|
|
End If
|
|
Next
|
|
|
|
dataTable.Rows.Add(columns)
|
|
curRow += 1
|
|
End While
|
|
|
|
Return dataTable
|
|
End Function
|
|
End Class
|