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 ViewState("DtDatos") 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 = Now.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, 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 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
" & 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 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, 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.

") 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()) Else ObjMetas.RollBack() If RowsNoCargados > 0 Then MensajeFinal.Append("No se pudieron actualizar " & RowsNoCargados & " metas.
") End If Alert(MensajeFinal.ToString()) End If End Try End If End Sub End Class