+
+
+
diff --git a/Ventas/CatMetasVendedores.aspx.vb b/Ventas/CatMetasVendedores.aspx.vb
index 5a956cdb6..db8d9ff24 100644
--- a/Ventas/CatMetasVendedores.aspx.vb
+++ b/Ventas/CatMetasVendedores.aspx.vb
@@ -1,7 +1,7 @@
-Imports System.Data
-Imports System.Linq
+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
@@ -14,21 +14,50 @@ Partial Class CatMetasVendedores
End Property
Protected Sub Page_Load(sender As Object, e As System.EventArgs) Handles Me.Load
- If Not IsPostBack Then
- CargaDatos()
+ If Not IsPostBack Then
CargaDatosModal()
+ CargaCombos()
+ CargaDatos()
End If
End Sub
- Private Sub CargaDatos()
+ 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) Then
+ 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()
@@ -122,5 +151,238 @@ Partial Class CatMetasVendedores
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 " & 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.
")
+ End If
+ If RowsCargados > 0 Then
+ MensajeFinal.Append("Se cargaron " & RowsCargados & " metas correctamente.")
+ End If
+ If RowsNoCargados > 0 Then
+ MensajeFinal.Append("No se pudieron actualizar " & RowsNoCargados & " metas. ")
+ 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
diff --git a/Ventas/MetasVendedores.aspx.vb b/Ventas/MetasVendedores.aspx.vb
index 93278664a..984b62242 100644
--- a/Ventas/MetasVendedores.aspx.vb
+++ b/Ventas/MetasVendedores.aspx.vb
@@ -79,24 +79,24 @@ Partial Class MetasVendedores
e.Row.FCLabel("lblRealAcumuladoPorcentaje").Text = String.Format("{0}{1}", e.Row.FCLabel("lblRealAcumuladoPorcentaje").Text, "%")
'e.Row.FCLabel("lblVarVSAAPerc").Text = String.Format("{0}{1}", e.Row.FCLabel("lblVarVSAAPerc").Text, "%")
- Select Case e.Row.DataKey("Etiqueta")
- Case "GrupoSuperior"
- e.Row.CssClass = "GrupoSuperior"
- ' e.Row.FCLabel("lblRealMes").Text = ""
- ' e.Row.FCLabel("lblVtaMesAA").Text = ""
- ' e.Row.FCLabel("lblObjMes").Text = ""
- ' e.Row.FCLabel("lblRealAcumulado").Text = ""
- ' e.Row.FCLabel("lblRealMesPorcentaje").Text = ""
- ' e.Row.FCLabel("lblAAntAcumulado").Text = ""
- ' e.Row.FCLabel("lblObjAcumulado").Text = ""
- ' e.Row.FCLabel("lblVarVSAAPerc").Text = ""
- ' e.Row.FCLabel("lblVarVSAA").Text = ""
- ' e.Row.FCLabel("lblVarVSObjAcum").Text = ""
- Case "Categoria"
+ Select Case e.Row.DBCampo("TipoFila")
+ Case "1"
+ e.Row.CssClass = "GrupoSuperior"
+ ' e.Row.FCLabel("lblRealMes").Text = ""
+ ' e.Row.FCLabel("lblVtaMesAA").Text = ""
+ ' e.Row.FCLabel("lblObjMes").Text = ""
+ ' e.Row.FCLabel("lblRealAcumulado").Text = ""
+ ' e.Row.FCLabel("lblRealMesPorcentaje").Text = ""
+ ' e.Row.FCLabel("lblAAntAcumulado").Text = ""
+ ' e.Row.FCLabel("lblObjAcumulado").Text = ""
+ ' e.Row.FCLabel("lblVarVSAAPerc").Text = ""
+ ' e.Row.FCLabel("lblVarVSAA").Text = ""
+ ' e.Row.FCLabel("lblVarVSObjAcum").Text = ""
+ Case "2"
e.Row.CssClass = "Totales"
- Case "Clasificacion"
+ Case "3"
e.Row.CssClass = "SubTotales2"
- Case "Clasificacion2"
+ Case "4"
e.Row.CssClass = "SubTotales"
End Select