Files
SIG/RH/ActualizacionMasiva.aspx.vb
JORGE LUIS CAUDILLO ESPARZA b2cca5ec15
2020-07-30 13:49:07 -07:00

390 lines
17 KiB
VB.net

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 = "<b>Sub Proyecto:</b> " & 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 = "<b>Turno:</b> " & 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.<br/> 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