Option Strict On Option Explicit On Imports Extensiones Imports System.Data Partial Class RH_ActualizacionMasiva Inherits ClsPaginas Protected Sub Page_Load(sender As Object, e As System.EventArgs) Handles Me.Load If Not IsPostBack Then SetPermisos() 'DdlCliente.Attributes.Add("onclick", "CargaClientes();") CargaProyecto() CargaTurnos() CargaSupervisores() End If End Sub Private Sub SetPermisos() End Sub #Region "Propiedades" Private ReadOnly Property DTUsuarios As DataTable Get Return DirectCast(ViewState("DTUsuarios"), DataTable) End Get End Property Private ReadOnly Property DTTurno As DataTable Get Return DirectCast(ViewState("DTTurno"), DataTable) End Get End Property Private ReadOnly Property DTSubProyectos As DataTable Get Return DirectCast(ViewState("DTSubProyectos"), DataTable) End Get End Property Private ReadOnly Property DTProyectos As DataTable Get Return DirectCast(ViewState("DTProyectos"), DataTable) End Get End Property #End Region #Region "CargaCombos" Private Sub CargaClientes() 'Dim ObjClientes As New ClsClientes 'If ObjClientes.GetClientes(-1, "-1", "-1", "-1", "-1", "-1", "-1", -1, UsuarioActual.CveEmpresa) Then ' DdlCliente.DataSource = ObjClientes.DtResultados 'Else ' DdlCliente.DataSource = Nothing 'End If 'ObjClientes.Dispose() ''Application("GlobalDTResponsable") 'DdlCliente.DataBind() End Sub 'Protected Sub BtnCargarClientes_Click(sender As Object, e As System.EventArgs) Handles BtnCargarClientes.Click ' CargaClientes() ' DdlCliente.Attributes.Remove("onclick") 'End Sub Private Sub CargaProyecto() ViewState("DTProyectos") = GlobalDTProyectos(UsuarioActual.Empresa.CveEmpresa) Dim Row As DataRow = DirectCast(ViewState("DTProyectos"), DataTable).NewRow() Row("CveProyecto") = -1 : Row("Proyecto") = "Sin Proyecto asignado" DirectCast(ViewState("DTProyectos"), DataTable).Rows.InsertAt(Row, 0) DdlProyecto.DataSource = GlobalDTProyectosUsuarios(UsuarioActual.CveUsuario, -1, UsuarioActual.CveEmpresa, 1) DdlProyecto.DataBind() End Sub Private Sub CargaSubProyecto() ViewState("DTSubProyectos") = GlobalDTSubProyectos(DdlProyecto.SelectedValue.ToEntero) DdlSubProyecto.Items.Clear() DdlSubProyecto.DataSource = GlobalDTSubProyectos(DdlProyecto.SelectedValue.ToEntero) DdlSubProyecto.DataBind() DdlSubProyecto.Items.Insert(0, New ListItem("Todos", "-1")) End Sub Private Sub CargaTurnos() ViewState("DTTurno") = GlobalDTTurno.FiltraParametros("CveEmpresa = " & UsuarioActual.CveEmpresa) DdlTurno.DataSource = GlobalDTTurno.FiltraParametros("CveEmpresa = " & UsuarioActual.CveEmpresa) DdlTurno.DataBind() End Sub Private Sub CargaSupervisores() ViewState("DTUsuarios") = GlobalDTUsuarios.FiltraParametros("CveEmpresa = " & UsuarioActual.CveEmpresa & " AND EsSupervisorRH = 1 ") Dim Row As DataRow = DirectCast(ViewState("DTUsuarios"), DataTable).NewRow() Row("CveUsuario") = -1 : Row("Nombre") = "Sin Supervisor Asignado" DirectCast(ViewState("DTUsuarios"), DataTable).Rows.InsertAt(Row, 0) 'DdlSupervisor.DataSource = GlobalDTUsuarios.FiltraParametros("CveEmpresa = " & UsuarioActual.CveEmpresa & " AND EsSupervisorRH = 1 ") 'DdlSupervisor.DataBind() End Sub #End Region Protected Sub DdlProyecto_SelectedIndexChanged(sender As Object, e As System.EventArgs) Handles DdlProyecto.SelectedIndexChanged CargaSubProyecto() End Sub Protected Sub BtnConsultar_Click(sender As Object, e As System.EventArgs) Handles BtnConsultar.Click Using ObjPersonal As New ClsRH If ObjPersonal.GetPersonalMasivo(DdlTurno.SelectedValue.ToEntero, DdlProyecto.SelectedValue.ToEntero, DdlSubProyecto.SelectedValue.ToEntero, -1, UsuarioActual.CveEmpresa) Then GvDatos.DataSource = ObjPersonal.DtResultados Else GvDatos.DataSource = Nothing End If End Using GvDatos.DataBind() UPDatos.Update() End Sub Protected Sub GvDatos_RowCreated(sender As Object, e As System.Web.UI.WebControls.GridViewRowEventArgs) Handles GvDatos.RowCreated If e.Row.RowType = DataControlRowType.DataRow AndAlso (e.Row.RowState = DataControlRowState.Alternate OrElse e.Row.RowState = DataControlRowState.Normal) Then 'e.Row.FCDropDownList("DdlGVProyecto").DataSource = DTProyectos 'e.Row.FCDropDownList("DdlGVProyecto").DataBind() ''e.Row.FCDropDownList("DdlGVProyecto").Items.Insert(0, New ListItem("Sin Proyecto asignado", "-1")) 'e.Row.FCDropDownList("DdlGVSubProyecto").DataSource = DTSubProyectos 'e.Row.FCDropDownList("DdlGVSubProyecto").DataBind() ''e.Row.FCDropDownList("DdlGVSubProyecto").Items.Insert(0, New ListItem("Sin SubProyecto asignado", "-1")) 'e.Row.FCDropDownList("DdlTurno").DataSource = DTTurno 'e.Row.FCDropDownList("DdlTurno").DataBind() 'e.Row.FCDropDownList("DdlSupervisor").DataSource = DTUsuarios 'e.Row.FCDropDownList("DdlSupervisor").DataBind() ''e.Row.FCDropDownList("DdlSupervisor").Items.Insert(0, New ListItem("Sin Supervisor Asignado", "-1")) End If End Sub Protected Sub GvDatos_RowDataBound(sender As Object, e As System.Web.UI.WebControls.GridViewRowEventArgs) Handles GvDatos.RowDataBound If e.Row.RowType = DataControlRowType.DataRow Then If e.Row.DBCampo("Turno") = "" AndAlso e.Row.DBCampo("Nombre") = "" Then e.Row.FCLiteral("LtlNombre").Text = "Sub Proyecto: " & If(e.Row.DBCampo("SubProyecto") = String.Empty, "Sin Proyecto Asignado", e.Row.DBCampo("SubProyecto")) e.Row.Cells(0).ColumnSpan = 7 For i As Integer = 1 To 6 e.Row.Cells(i).Visible = False Next e.Row.Cells(0).HorizontalAlign = HorizontalAlign.Left ElseIf e.Row.DBCampo("Turno") <> "" AndAlso e.Row.DBCampo("Nombre") = "" Then e.Row.FCLiteral("LtlNombre").Text = "Turno: " & e.Row.DBCampo("Turno") e.Row.Cells(0).ColumnSpan = 7 For i As Integer = 1 To 6 e.Row.Cells(i).Visible = False Next e.Row.Cells(0).HorizontalAlign = HorizontalAlign.Left Else 'If e.Row.DBCampo("CveProyecto") <> String.Empty Then e.Row.FCDropDownList("DdlGVProyecto").SelectedValue = e.Row.DBCampo("CveProyecto") 'CargaSubProyectoGV(e.Row.FCDropDownList("DdlGVProyecto"), e.Row.FCDropDownList("DdlGVSubProyecto")) 'If e.Row.DBCampo("CveSubProyecto") <> String.Empty Then e.Row.FCDropDownList("DdlGVSubProyecto").SelectedValue = e.Row.DBCampo("CveSubProyecto") 'e.Row.FCDropDownList("DdlGVSubProyecto").Attributes.Add("onChange", "F(this, " & e.Row.FCDropDownList("DdlGVProyecto").ClientID & ")") 'If e.Row.DBCampo("CveTurno") <> String.Empty Then e.Row.FCDropDownList("DdlTurno").SelectedValue = e.Row.DBCampo("CveTurno") 'If e.Row.DBCampo("CveSupervisor") <> String.Empty Then e.Row.FCDropDownList("DdlSupervisor").SelectedValue = e.Row.DBCampo("CveSupervisor") e.Row.FCTextBox("TxtSalarioCotizado").Text = e.Row.FCTextBox("TxtSalarioCotizado").Text.Replace(",", "") ''Deshabilita todo 'e.Row.Cells(1).Enabled = True : e.Row.Cells(2).Enabled = True : e.Row.Cells(3).Enabled = True : e.Row.Cells(4).Enabled = True 'e.Row.Cells(5).Enabled = True : e.Row.Cells(6).Enabled = True : e.Row.Cells(7).Enabled = True '25: CargaMasiva-Proy,Sup,Tur 'If Not UsuarioActual.TienePermisoProceso(25) Then e.Row.Cells(1).Enabled = False : e.Row.Cells(2).Enabled = False : e.Row.Cells(3).Enabled = False : e.Row.Cells(4).Enabled = False End If End If End Sub Protected Sub BtnGuardar_Click(sender As Object, e As System.EventArgs) Handles BtnGuardar.Click 'Dim ObjPersonal As New ClsRH 'ObjPersonal.IniciaTransacSQL() Dim OcurrioError As Boolean = False Using ObjPersonal As ClsRH = New ClsRH() ObjPersonal.IniciaTransacSQL() For Each Row As GridViewRow In GvDatos.Rows If Row.DataKey("CvePersonal") <> "" Then 'If Not ObjPersonal.UpdatePersonalMasivo(Row.FCDropDownList("DdlTurno").SelectedValue.ToEntero, Row.FCDropDownList("DdlGVSubProyecto").SelectedValue.ToEntero, Row.FCDropDownList("DdlSupervisor").SelectedValue.ToEntero, ' Row.FCTextBox("TxtSalarioDiario").Text.ToDouble, Row.FCTextBox("TxtSDI").Text.ToDouble, Row.FCTextBox("TxtSalarioCotizado").Text.ToDouble, ' Row.DataKey("CvePersonal").ToEntero, UsuarioActual.CveEmpresa) Then ' OcurrioError = True ' ObjPersonal.RollBack() ' Exit For 'End If If ObjPersonal.UpdateSalarios(Row.DataKey("CvePersonal").ToEntero(), DateTime.Now.ToString("yyyy/MM/dd"), UsuarioActual.CveEmpresa, Row.FCTextBox("TxtSalarioDiario").Text.ToDecimal(), Row.FCTextBox("TxtSDI").Text.ToDecimal(), Row.FCTextBox("TxtSalarioCotizado").Text.ToDecimal(), Row.FCTextBox("TxtSalarioDiario").Text.ToDecimal(), Row.FCCheckBox("ChkCalcularSDI").Checked) Then Else OcurrioError = True ObjPersonal.RollBack() Exit For End If End If Next If Not OcurrioError Then ObjPersonal.Commit() Alert("La información se guardó correctamente.", TipoMensaje.MsgInformacion) Else Alert("Ocurrió un error al guardar la información.", TipoMensaje.MsgError) End If End Using 'ObjPersonal.Dispose() End Sub Private Sub CargaSubProyectoGV(DdlProyecto As DropDownList, DdlSubProyecto As DropDownList) DdlSubProyecto.Items.Clear() DdlSubProyecto.DataSource = GlobalDTSubProyectos(DdlProyecto.SelectedValue.ToEntero) DdlSubProyecto.DataBind() DdlSubProyecto.Items.Insert(0, New ListItem("Sin SubProyecto asignado", "-1")) End Sub Protected Sub DdlGVProyecto_SelectedIndexChanged(sender As Object, e As System.EventArgs) Dim Array() As String = Nothing Dim DdlGVSubProyecto As DropDownList = Nothing Array = DirectCast(sender, DropDownList).ClientID.Split("_"c) If Array.Length > 0 Then DdlGVSubProyecto = DirectCast(GvDatos.Rows(Array(3).ToEntero).Controls(2).Controls(1), DropDownList) End If If DdlGVSubProyecto IsNot Nothing Then CargaSubProyectoGV(DirectCast(sender, DropDownList), DdlGVSubProyecto) End Sub Protected Sub LnkFormato_Click(ByVal sender As Object, ByVal e As EventArgs) Try Dim wb As ClosedXML.Excel.XLWorkbook = New ClosedXML.Excel.XLWorkbook() Dim libro = wb.AddWorksheet("Salario") Dim column As Integer = 1 Dim Fila As Integer = 1 libro.Cell(Fila, column).Value = "Codigo" column += 1 libro.Cell(Fila, column).Value = "Empleado" column += 1 libro.Column(column).Width = 35 libro.Cell(Fila, column).Value = "SDD" column += 1 libro.Cell(Fila, column).Value = "SDI" column += 1 libro.Cell(Fila, column).Value = "SD IMSS" column += 1 Dim DTEmpleados As New DataTable() libro.Row(1).CellsUsed().Style.Font.FontColor = ClosedXML.Excel.XLColor.White libro.Row(1).CellsUsed().Style.Fill.SetBackgroundColor(ClosedXML.Excel.XLColor.FromArgb(79, 129, 189)) Using ObjPersonal As New ClsRH If ObjPersonal.GetPersonalMasivo(DdlTurno.SelectedValue.ToEntero, DdlProyecto.SelectedValue.ToEntero, DdlSubProyecto.SelectedValue.ToEntero, -1, UsuarioActual.CveEmpresa) Then DTEmpleados = ObjPersonal.DtResultados End If End Using For Each dro As DataRow In DTEmpleados.Select("CvePersonal > 0 AND LEN(Codigo)>0") column = 1 Fila = Fila + 1 libro.Cell(Fila, column).Value = String.Format("'{0}", dro("Codigo")) column += 1 libro.Cell(Fila, column).Value = String.Format("'{0}", dro("Nombre")) column += 1 libro.Column(column).Width = 35 libro.Cell(Fila, column).Value = dro("SalarioDiario") column += 1 libro.Cell(Fila, column).Value = dro("SDI") column += 1 libro.Cell(Fila, column).Value = dro("SalarioDiarioSS") column += 1 Next Dim fs As System.IO.Stream = New System.IO.MemoryStream() wb.SaveAs(fs) fs.Position = 0 Dim memoryStream As System.IO.MemoryStream = New System.IO.MemoryStream() Using input As System.IO.Stream = fs input.CopyTo(memoryStream) End Using memoryStream.Position = 0 Response.Clear() Response.Buffer = True Response.ContentType = "application/vnd.openxmlformats-officedocument.spreadsheetml.sheet" Response.AddHeader("content-disposition", String.Format("attachment;filename={0}.xlsx", "FormatoCargaSalario")) Response.BinaryWrite(memoryStream.ToArray()) Response.[End]() Catch ex As Exception Alert("Ocurrio un error al generar el Formato de salario" & ex.ToString()) End Try End Sub Protected Sub LnkCargarSalarios_Click(sender As Object, e As EventArgs) Dim Filesgral As List(Of Archivo) = TxtArchivoNomina.getfiles().Archivos Dim continuar As Boolean = Filesgral.Count > 0 Dim stringError As String = "" Dim fileItem As Archivo = If(continuar, Filesgral(0), Nothing) Dim DTEmpleados As New DataTable() Using ObjPersonal As New ClsRH If ObjPersonal.GetPersonalMasivo(-1, -1, -1, -1, UsuarioActual.CveEmpresa) Then DTEmpleados = ObjPersonal.DtResultados Else continuar = False stringError = "Ocurrio un Error al procesar el excel " End If End Using If continuar Then Dim FileExtension As String = fileItem.Extencion.ToUpper() If FileExtension = "XLS" Or FileExtension = "XLSX" Or FileExtension = "CSV" Then Else continuar = False stringError = "No se inserto un archivo de tipo Excel" End If End If Dim DTEXcel As DataTable = New DataTable() If continuar Then Try DTEXcel = Extensiones.ModExtensiones.ReadExcelFile(fileItem.FileUrl, True).FiltraParametros(" LEN(Codigo)>0 ") Catch ex As Exception continuar = False stringError = "Ocurrio un Error al procesar el excel " String.Format("{0} " & vbCrLf & "{0}", stringError, ex.ToString()).GuardaLog() End Try End If If continuar Then Dim OcurrioError As Boolean = False Dim contador As Integer = 0 Using ObjPersonal As ClsRH = New ClsRH() ObjPersonal.IniciaTransacSQL() For Each Row As DataRow In DTEXcel.Rows If Row("Codigo").ToString() <> "" Then Dim drow As DataRow = DTEmpleados.FiltroPrimero(String.Format("Codigo='{0}'", Row("Codigo"))) If Not IsNothing(drow) Then Dim CvePersonal As Integer = drow("CvePersonal").ToString().ToEntero() If ObjPersonal.UpdateSalarios(CvePersonal, DateTime.Now.ToString("yyyy/MM/dd"), UsuarioActual.CveEmpresa, Row("SDD").ToString().ToDecimal(), Row("SDI").ToString().ToDecimal(), Row("SD IMSS").ToString().ToDecimal(), Row("SDD").ToString().ToDecimal(), ChkCalcularSDIXLS.Checked) Then contador = contador + 1 Else OcurrioError = True Exit For End If End If End If Next If Not OcurrioError Then ObjPersonal.Commit() Alert(String.Format("La información se guardó correctamente.
se registraron {0} empleados", contador), TipoMensaje.MsgInformacion) Else ObjPersonal.RollBack() Alert("Ocurrió un error al guardar la información.", TipoMensaje.MsgError) End If End Using Else Alert(stringError, TipoMensaje.MsgError) End If End Sub End Class