1904 lines
83 KiB
VB.net
1904 lines
83 KiB
VB.net
Option Strict On
|
|
Imports Extensiones
|
|
Imports System.Data
|
|
|
|
Partial Class RH_RepChecadorPreAsistencia
|
|
Inherits ClsPaginas
|
|
#Region "Propiedades"
|
|
|
|
Private Property FiltroAplicado As String
|
|
Get
|
|
If ViewState("CveRegistroDetalle") Is Nothing Then
|
|
Return "-1"
|
|
Else
|
|
Return ViewState("CveRegistroDetalle").ToString()
|
|
End If
|
|
End Get
|
|
Set(value As String)
|
|
ViewState("CveRegistroDetalle") = value
|
|
End Set
|
|
End Property
|
|
|
|
|
|
Private Property DtDatosTabla As DataTable
|
|
Get
|
|
If ViewState("DtDatosTabla") Is Nothing Then
|
|
Return New DataTable
|
|
Else
|
|
Return DirectCast(ViewState("DtDatosTabla"), DataTable)
|
|
End If
|
|
End Get
|
|
Set(value As DataTable)
|
|
ViewState("DtDatosTabla") = value
|
|
End Set
|
|
End Property
|
|
|
|
|
|
Private Property DtResultados As DataTable
|
|
Get
|
|
If ViewState("DtResultados") Is Nothing Then
|
|
Return New DataTable
|
|
Else
|
|
Return DirectCast(ViewState("DtResultados"), DataTable)
|
|
End If
|
|
End Get
|
|
Set(value As DataTable)
|
|
ViewState("DtResultados") = value
|
|
End Set
|
|
End Property
|
|
|
|
Private Property DTTipoPeriodoDatos As DataTable
|
|
Get
|
|
If ViewState("DTTipoPeriodoDatos") Is Nothing Then
|
|
Return New DataTable
|
|
Else
|
|
Return DirectCast(ViewState("DTTipoPeriodoDatos"), DataTable)
|
|
End If
|
|
End Get
|
|
Set(value As DataTable)
|
|
ViewState("DTTipoPeriodoDatos") = value
|
|
End Set
|
|
End Property
|
|
|
|
Private Property DTPeridos As DataTable
|
|
Get
|
|
If ViewState("DTPeridoso") Is Nothing Then
|
|
Return New DataTable
|
|
Else
|
|
Return DirectCast(ViewState("DTPeridoso"), DataTable)
|
|
End If
|
|
End Get
|
|
Set(value As DataTable)
|
|
ViewState("DTPeridoso") = value
|
|
End Set
|
|
End Property
|
|
|
|
Private Property FechaInicioPeriodo As Date
|
|
Get
|
|
If ViewState("FechaInicioPeriodo") Is Nothing Then
|
|
Return Nothing
|
|
Else
|
|
Return DirectCast(ViewState("FechaInicioPeriodo"), Date)
|
|
End If
|
|
End Get
|
|
Set(value As Date)
|
|
ViewState("FechaInicioPeriodo") = value
|
|
End Set
|
|
End Property
|
|
|
|
Private Property FechaFinPeriodo As Date
|
|
Get
|
|
If ViewState("FechaFinPeriodo") Is Nothing Then
|
|
Return Nothing
|
|
Else
|
|
Return DirectCast(ViewState("FechaFinPeriodo"), Date)
|
|
End If
|
|
End Get
|
|
Set(value As Date)
|
|
ViewState("FechaFinPeriodo") = value
|
|
End Set
|
|
End Property
|
|
|
|
|
|
Private Property DiasPeriodo As Integer
|
|
Get
|
|
If ViewState("DiasPeriodo") Is Nothing Then
|
|
Return -1
|
|
Else
|
|
Return DirectCast(ViewState("DiasPeriodo"), Integer)
|
|
End If
|
|
End Get
|
|
Set(value As Integer)
|
|
ViewState("DiasPeriodo") = value
|
|
End Set
|
|
End Property
|
|
|
|
Private Property CveTipoPeriodo As Integer
|
|
Get
|
|
If ViewState("CveTipoPeriodo") Is Nothing Then
|
|
Return -1
|
|
Else
|
|
Return DirectCast(ViewState("CveTipoPeriodo"), Integer)
|
|
End If
|
|
End Get
|
|
Set(value As Integer)
|
|
ViewState("CveTipoPeriodo") = value
|
|
End Set
|
|
End Property
|
|
|
|
#End Region
|
|
|
|
Private Sub RH_RepChecadorIncidencias_Load(sender As Object, e As EventArgs) Handles Me.Load
|
|
|
|
If Not Page.IsPostBack Then
|
|
CargaCombos()
|
|
End If
|
|
|
|
GvBind()
|
|
|
|
End Sub
|
|
|
|
Private Sub CargaCombos()
|
|
|
|
|
|
DdlAsistenciaInacistencia.DataSource = GlobalDTAsistenciasInasistencias.FiltraParametros(String.Format(" CveEmpresa = {0} AND CveAsistenciasInasistencias <> 6", UsuarioActual.Empresa.CveEmpresa))
|
|
DdlAsistenciaInacistencia.DataBind()
|
|
DdlAsistenciaInacistencia.Items.Insert(0, New ListItem("Seleccionar una opción", "-1"))
|
|
Dim objNom As New ClsNominas
|
|
|
|
If objNom.GetTiposPeriodos() Then
|
|
DdlTipoPeriodo.DataSource = objNom.DtResultados.FiltraParametros(" CveTipoPeriodo <> 6 ")
|
|
DTTipoPeriodoDatos = objNom.DtResultados
|
|
End If
|
|
|
|
objNom.Dispose()
|
|
|
|
DdlTipoPeriodo.DataBind()
|
|
DdlTipoPeriodo.Items.Insert(0, New ListItem("Seleccione uno", "-1"))
|
|
|
|
DdlTurno.DataSource = GlobalDTTurno(UsuarioActual.CveEmpresa)
|
|
DdlTurno.DataBind()
|
|
' DdlTurno.Items.Insert(0, New ListItem("Seleccione uno", "-1"))
|
|
DdlSubProyecto.DataSource = GlobalDTSubProyectos(-1, -1, UsuarioActual.CveEmpresa, 1)
|
|
DdlSubProyecto.DataBind()
|
|
DdlSubProyecto.Items.Insert(0, New ListItem("Todos", "-1"))
|
|
DdlTurno.Items.Insert(0, New ListItem("Todos", "-1"))
|
|
DdlTurno.SelectedValue = "-1"
|
|
End Sub
|
|
|
|
|
|
Private Sub GeneraFechasInicioFinPerdiodo()
|
|
|
|
lblTituloPagina.Text = ""
|
|
|
|
If DdlRango.SelectedIndex > 0 Then
|
|
lblTituloPagina.Text = DdlRango.SelectedItem.Text
|
|
|
|
Dim DtTemp As DataTable = DTPeridos.FiltraParametros("CvePeriodo = " & DdlRango.SelectedValue.ToEntero)
|
|
FechaInicioPeriodo = DtTemp(0)("FechaInicio").ToString().ToDate
|
|
FechaFinPeriodo = DtTemp(0)("FechaFin").ToString().ToDate
|
|
End If
|
|
|
|
UpTituloPagina.Update()
|
|
|
|
End Sub
|
|
|
|
Protected Sub DdlTipoPeriodo_SelectedIndexChanged(sender As Object, e As EventArgs) Handles DdlTipoPeriodo.SelectedIndexChanged
|
|
|
|
DdlRango.Items.Clear()
|
|
DTPeridos = Nothing
|
|
|
|
Dim objRh As New ClsRH
|
|
|
|
If DdlTipoPeriodo.SelectedIndex <> 0 Then
|
|
|
|
CveTipoPeriodo = DdlTipoPeriodo.SelectedValue.ToEntero
|
|
DiasPeriodo = DTTipoPeriodoDatos.FiltraParametros(" CveTipoPeriodo = " & DdlTipoPeriodo.SelectedValue)(0)("DiasPeriodo").ToString().ToEntero
|
|
|
|
Dim objNomina As New ClsNominas
|
|
|
|
If objNomina.GetPeriodos(DdlTipoPeriodo.SelectedValue.ToEntero, UsuarioActual.Empresa.CveEmpresa, -1, -1, -1) Then
|
|
|
|
TxtFechaModal.Text = ""
|
|
lblTituloPagina.Text = ""
|
|
UpTituloPagina.Update()
|
|
UpModalFechaBody.Update()
|
|
|
|
If objNomina.DtResultados.Rows.Count > 0 Then
|
|
BtnConsultar.Enabled = True
|
|
DTPeridos = objNomina.DtResultados
|
|
Dim DTPeridosView As DataView = DTPeridos.DefaultView
|
|
DTPeridosView.Sort = " FechaInicio desc "
|
|
DTPeridos = DTPeridosView.ToTable
|
|
DdlRango.DataSource = objNomina.DtResultados
|
|
|
|
' LblPeriodo.Visible = True
|
|
'DdlRango.Visible = True
|
|
Else
|
|
' RegistraScript("$('#ModalModalFecha').modal({ backdrop: 'static', keyboard: false});")
|
|
Alert("No se encontraron periodos disponibles.", TipoMensaje.MsgAdvertencia)
|
|
DTPeridos = Nothing
|
|
DdlRango.DataSource = Nothing
|
|
End If
|
|
Else
|
|
DTPeridos = Nothing
|
|
DdlRango.DataSource = Nothing
|
|
End If
|
|
|
|
Dim DtTempFechaInicial As DataTable = DTPeridos.FiltraParametros("Estatus = 1")
|
|
|
|
objNomina.Dispose()
|
|
DdlRango.DataBind()
|
|
|
|
If DtTempFechaInicial.Rows.Count > 0 Then
|
|
Dim temCvePeriodoNomi As Integer = DtTempFechaInicial(0)("CvePeriodo").ToString().ToEntero
|
|
DdlRango.SelectedValueExist(temCvePeriodoNomi)
|
|
End If
|
|
|
|
DdlRango.Items.Insert(0, New ListItem("Seleccione uno", "-1"))
|
|
UPFiltros.Update()
|
|
' BtnConsultar.Enabled = True
|
|
Else
|
|
|
|
DTPeridos = Nothing
|
|
DdlRango.DataSource = Nothing
|
|
|
|
'DdlRango.Visible = False
|
|
' LblPeriodo.Visible = Fale
|
|
lblTituloPagina.Text = ""
|
|
UPFiltros.Update()
|
|
UpTituloPagina.Update()
|
|
BtnConsultar.Enabled = False
|
|
End If
|
|
|
|
GeneraFechasInicioFinPerdiodo()
|
|
End Sub
|
|
|
|
Private Sub DdlRango_SelectedIndexChanged(sender As Object, e As EventArgs) Handles DdlRango.SelectedIndexChanged
|
|
|
|
GeneraFechasInicioFinPerdiodo()
|
|
UpTituloPagina.Update()
|
|
|
|
End Sub
|
|
|
|
Private Sub CargaDatos()
|
|
|
|
DtDatosTabla = Nothing
|
|
Dim objRH As New ClsRH
|
|
Dim objGrales As New ClsGenerales
|
|
Dim DTDatos As New DataTable
|
|
Dim DtPersonal As New DataTable
|
|
Dim DTHorarioPersonal As DataTable
|
|
Dim DtVacaciones As New DataTable
|
|
|
|
Dim RetrasosMaximos As Integer = 3
|
|
Dim dt As New DataTable
|
|
|
|
Dim Retardos As Integer = 0
|
|
Dim DTAsistenciasInasistencias As New DataTable
|
|
Dim DTChecadorRegistros As New DataTable
|
|
Dim DTHorarios As New DataTable
|
|
Dim DTDiasInhabiles As New DataTable
|
|
Dim DTTipoPeriodo As New DataTable
|
|
Dim DTAsistenciasInasistenciasReg As New DataTable
|
|
|
|
Dim CveChecadorHorario As Integer = -1
|
|
Dim TolRetAcumulados As Integer = 0
|
|
Dim TolRetEntradaMin As Integer = 0
|
|
Dim TolFalEntradaMin As Integer = 0
|
|
Dim RetSalidaAntes As Boolean = True
|
|
Dim TolSalidaAntesMin As Integer = 0
|
|
|
|
Dim CveASistenciaInasistenciaAsistio As Integer = -1
|
|
Dim CveAsistenciaInasistenciaFalta As Integer = -1
|
|
Dim CveAsistenciaInasistenciaRetardo As Integer = -1
|
|
Dim CveAsistenciaInasistenciaDescanso As Integer = -1
|
|
|
|
Try
|
|
CveASistenciaInasistenciaAsistio = GlobalDTAsistenciasInasistencias.FiltraParametros(" TipoCorto = 'A' AND CveEmpresa = " & UsuarioActual.Empresa.CveEmpresa)(0)("CveAsistenciasInasistencias").ToString().ToEntero
|
|
CveAsistenciaInasistenciaFalta = GlobalDTAsistenciasInasistencias.FiltraParametros(" TipoCorto = 'F' AND CveEmpresa = " & UsuarioActual.Empresa.CveEmpresa)(0)("CveAsistenciasInasistencias").ToString().ToEntero
|
|
CveAsistenciaInasistenciaRetardo = GlobalDTAsistenciasInasistencias.FiltraParametros(" TipoCorto = 'R' AND CveEmpresa = " & UsuarioActual.Empresa.CveEmpresa)(0)("CveAsistenciasInasistencias").ToString().ToEntero
|
|
CveAsistenciaInasistenciaDescanso = GlobalDTAsistenciasInasistencias.FiltraParametros(" TipoCorto = 'D' AND CveEmpresa = " & UsuarioActual.Empresa.CveEmpresa)(0)("CveAsistenciasInasistencias").ToString().ToEntero
|
|
|
|
Catch ex As Exception
|
|
Alert("Se presento un error al obtener las claves de asistencia.", TipoMensaje.MsgError)
|
|
Exit Sub
|
|
End Try
|
|
|
|
GeneraFechasInicioFinPerdiodo()
|
|
|
|
DiasPeriodo = (FechaFinPeriodo - FechaInicioPeriodo).TotalDays.ToEntero + 1
|
|
Dim objNom As New ClsNominas
|
|
|
|
If objNom.GetTiposPeriodos() Then
|
|
DdlTipoPeriodo.DataSource = objNom.DtResultados
|
|
DTTipoPeriodo = objNom.DtResultados
|
|
End If
|
|
|
|
objNom.Dispose()
|
|
|
|
If objGrales.DiasInhabiles_Get(-1, 1, UsuarioActual.CveEmpresa) Then
|
|
DTDiasInhabiles = objGrales.DtResultados
|
|
End If
|
|
|
|
objGrales.Dispose()
|
|
|
|
Dim Resultados As New DataTable
|
|
|
|
Resultados.Columns.Add("CvePersonal")
|
|
Resultados.Columns.Add("NombreCompleto")
|
|
'Resultados.Columns.Add("Codigo")
|
|
Resultados.Columns.Add("CveSubProyecto")
|
|
Resultados.Columns.Add("SalarioDiario")
|
|
Resultados.Columns.Add("CveAsistenciasInasistencias")
|
|
Resultados.Columns.Add("PorcentajePago")
|
|
Resultados.Columns.Add("Fecha")
|
|
Resultados.Columns.Add("Asistio")
|
|
Resultados.Columns.Add("Retraso")
|
|
Resultados.Columns.Add("Inconsistencia")
|
|
Resultados.Columns.Add("Descanso")
|
|
Resultados.Columns.Add("Entrada")
|
|
Resultados.Columns.Add("Salida")
|
|
Resultados.Columns.Add("FaltaRetraso")
|
|
Resultados.Columns.Add("DiaInhabil")
|
|
Resultados.Columns.Add("FaltaPorRetrasos")
|
|
Resultados.Columns.Add("Mensaje")
|
|
Resultados.Columns.Add("FaltaRetardosAcumulados")
|
|
Resultados.Columns.Add("DiaInhabilStr")
|
|
Resultados.Columns.Add("DiaVacacion")
|
|
Resultados.Columns.Add("TipoCorto")
|
|
Resultados.Columns.Add("Sancion")
|
|
|
|
If DdlTurno.SelectedValue.ToEntero > 0 And DdlTipoPeriodo.SelectedValue.ToEntero > 0 And DdlRango.SelectedValue.ToEntero > 0 Then
|
|
|
|
Dim FiltroSubProyecto As String = ""
|
|
Dim filtroturno = If(DdlTurno.SelectedValue = "-1", "", $"AND CveTurno = { DdlTurno.SelectedValue}")
|
|
If DdlSubProyecto.SelectedIndex > 0 Then
|
|
FiltroSubProyecto = $" CveTipoPeriodo = {DdlTipoPeriodo.SelectedValue } {filtroturno} AND CveSubProyecto = { DdlSubProyecto.SelectedValue.ToEntero }"
|
|
Else
|
|
FiltroSubProyecto = $" CveTipoPeriodo = {DdlTipoPeriodo.SelectedValue } {filtroturno} "
|
|
End If
|
|
|
|
DtPersonal = GlobalDTRHPersonal(UsuarioActual.Empresa.CveEmpresa).FiltraParametros(FiltroSubProyecto)
|
|
|
|
If objRH.ChecadorHorariosGet(-1, 1, UsuarioActual.Empresa.CveEmpresa) Then
|
|
DTHorarios = objRH.DtResultados
|
|
|
|
If DdlTurno.SelectedIndex > 0 Then
|
|
Dim DTTemp As DataTable = GlobalDTTurno(UsuarioActual.CveEmpresa).FiltraParametros("CveTurno = " & DdlTurno.SelectedValue)
|
|
Dim TMCveChecadorHorario As Integer = -1
|
|
|
|
If DTTemp.Rows.Count > 0 Then
|
|
TMCveChecadorHorario = DTTemp(0)("CveChecadorHorario").ToString().ToEntero
|
|
Dim DtHorarioTemp = DTHorarios.FiltraParametros("CveChecadorHorario = " & TMCveChecadorHorario)
|
|
|
|
If DtHorarioTemp.Rows.Count > 0 Then
|
|
TolRetAcumulados = DtHorarioTemp(0)("TolRetAcumulados").ToString().ToEntero
|
|
TolRetEntradaMin = DtHorarioTemp(0)("TolRetEntradaMin").ToString().ToEntero
|
|
TolFalEntradaMin = DtHorarioTemp(0)("TolFalEntradaMin").ToString().ToEntero
|
|
RetSalidaAntes = Boolean.Parse(DtHorarioTemp(0)("RetSalidaAntes").ToString())
|
|
TolSalidaAntesMin = DtHorarioTemp(0)("TolSalidaAntesMin").ToString().ToEntero
|
|
End If
|
|
End If
|
|
End If
|
|
|
|
End If
|
|
|
|
If objRH.PreAsistenciaRegistrosGet(FechaInicioPeriodo, FechaFinPeriodo, DdlTurno.SelectedValue.ToEntero, UsuarioActual.Empresa.CveEmpresa) Then
|
|
DTChecadorRegistros = objRH.DtResultados
|
|
End If
|
|
|
|
If objRH.VacacionesGet(-1, UsuarioActual.Empresa.CveEmpresa, FechaInicioPeriodo, FechaFinPeriodo) Then
|
|
DtVacaciones = objRH.DtResultados
|
|
End If
|
|
|
|
If objRH.GetPersonalAsistenciaRegistros(FechaInicioPeriodo, FechaFinPeriodo, UsuarioActual.CveEmpresa) Then
|
|
DTAsistenciasInasistencias = objRH.DtResultados
|
|
End If
|
|
|
|
If objRH.ChecadorPreAsistenciaRegistrosAsistenciasGet(CveTipoPeriodo, FechaInicioPeriodo, FechaFinPeriodo, UsuarioActual.Empresa.CveEmpresa) Then
|
|
DTAsistenciasInasistenciasReg = objRH.DtResultados
|
|
|
|
If DTAsistenciasInasistenciasReg.Rows.Count > 0 Then
|
|
BtnAgregar.Visible = False
|
|
BtnEstusAsistenciaModal.Visible = False
|
|
DdlAsistenciaInacistencia.Enabled = False
|
|
Else
|
|
BtnAgregar.Visible = True
|
|
BtnEstusAsistenciaModal.Visible = True
|
|
DdlAsistenciaInacistencia.Enabled = True
|
|
End If
|
|
UpAgregar.Update()
|
|
End If
|
|
|
|
objRH.Dispose()
|
|
|
|
|
|
If RdbChecador.Checked Then
|
|
|
|
For Each dRow As DataRow In DtPersonal.Rows
|
|
|
|
Dim Fecha As Date = FechaInicioPeriodo
|
|
Dim ContadorFaltas As Integer = 0
|
|
Dim registrosPersonal As DataTable = DTChecadorRegistros.FiltraParametros(" CvePersonal = " & dRow(0).ToString())
|
|
|
|
If registrosPersonal.Rows.Count > 0 Then
|
|
DTHorarioPersonal = DTHorarios.FiltraParametros(" CveChecadorHorario = " & registrosPersonal(0)("CveHorario").ToString() & "")
|
|
Retardos = 0
|
|
|
|
For x As Integer = 1 To (DiasPeriodo)
|
|
|
|
Dim ReRow As DataRow = Resultados.NewRow
|
|
ReRow("CvePersonal") = dRow(0).ToString()
|
|
ReRow("NombreCompleto") = dRow("NombreCompleto").ToString()
|
|
'ReRow("Codigo") = dRow("Codigo").ToString()
|
|
ReRow("CveSubProyecto") = dRow("CveSubProyecto").ToString()
|
|
ReRow("SalarioDiario") = dRow("SalarioDiario").ToString()
|
|
ReRow("CveAsistenciasInasistencias") = "-1"
|
|
ReRow("PorcentajePago") = "0"
|
|
ReRow("Fecha") = Fecha.ToString()
|
|
ReRow("Retraso") = "False"
|
|
ReRow("Asistio") = "True"
|
|
ReRow("Inconsistencia") = "False"
|
|
ReRow("Descanso") = "False"
|
|
ReRow("Entrada") = "ND"
|
|
ReRow("Salida") = "ND"
|
|
ReRow("FaltaRetraso") = "False"
|
|
ReRow("FaltaPorRetrasos") = "False"
|
|
ReRow("DiaInhabil") = "False"
|
|
ReRow("Mensaje") = ""
|
|
ReRow("FaltaRetardosAcumulados") = "False"
|
|
ReRow("DiaInhabil") = "False"
|
|
ReRow("DiaInhabilStr") = ""
|
|
ReRow("DiaVacacion") = "False"
|
|
ReRow("CveAsistenciasInasistencias") = "-1"
|
|
ReRow("TipoCorto") = ""
|
|
ReRow("Sancion") = "False"
|
|
|
|
Dim diaSemana As Integer = Fecha.DayOfWeek
|
|
Dim Asistencia As Boolean = True
|
|
|
|
Dim Horario As DataTable = HorarioDiario(Fecha, DTHorarioPersonal)
|
|
Dim DiaLaboral As Boolean = Boolean.Parse(Horario(0)(0).ToString())
|
|
|
|
Dim HorarioEntrada As TimeSpan = TimeSpan.Parse(Horario(0)(1).ToString())
|
|
Dim HorarioSalidaComida As TimeSpan = TimeSpan.Parse(Horario(0)(2).ToString())
|
|
Dim HorarioEntradaComida As TimeSpan = TimeSpan.Parse(Horario(0)(3).ToString())
|
|
Dim HorarioSalida As TimeSpan = TimeSpan.Parse(Horario(0)(4).ToString())
|
|
|
|
Dim FechaHoraEntrada As DateTime
|
|
Dim FechahoraSalida As DateTime
|
|
Dim turnoNocturno As Boolean
|
|
|
|
Dim FechaHoraRegistroEntrada As DateTime
|
|
Dim FechaHoraRegistroSalida As DateTime
|
|
|
|
FechaHoraEntrada = Fecha + HorarioEntrada
|
|
If Not turnoNocturno Then
|
|
FechahoraSalida = Fecha + HorarioEntrada + (HorarioSalida - HorarioEntrada)
|
|
Else
|
|
FechahoraSalida = FechahoraSalida.AddDays(1) - HorarioEntrada + HorarioSalida
|
|
End If
|
|
|
|
Dim tempDatetime1 As DateTime = FechaHoraEntrada.AddHours(-2) 'la entrada se podra checar hasta dos horas antes de la hora de entrada
|
|
Dim tempDatetime2 As DateTime = FechahoraSalida.AddHours(4) 'Legalmente no se pueden hacer mas de 3 horas extras al día
|
|
|
|
Dim tabladelDia As DataTable = registrosPersonal.FiltraParametros(" CvePersonal = " & dRow(0).ToString() & " AND FechaRegistro >= '" & tempDatetime1.ToShortDateString & "' AND FechaRegistro <= '" & tempDatetime2.ToString() & "'")
|
|
|
|
If DTAsistenciasInasistencias.FiltraParametros(" CvePersonal = " & dRow(0).ToString() & " AND Fecha >= '" & Fecha & "'").Rows.Count > 0 Then
|
|
ReRow("CveAsistenciasInasistencias") = DTAsistenciasInasistencias(0)("CveAsistenciasInasistencias").ToString()
|
|
End If
|
|
|
|
Dim CountRegistros As Integer = tabladelDia.Rows.Count
|
|
|
|
Dim Inconsistencia As Boolean = False
|
|
|
|
If Not DiaLaboral Then
|
|
ReRow("CveAsistenciasInasistencias") = CveAsistenciaInasistenciaDescanso
|
|
ReRow("PorcentajePago") = "100"
|
|
ReRow("Descanso") = "True"
|
|
End If
|
|
|
|
Dim TempDTValidaciones As DataTable = DTDiasInhabiles.FiltraParametros(" FechaInhabil = '" & Fecha.ToString() & "'")
|
|
If TempDTValidaciones.Rows.Count > 0 Then
|
|
ReRow("PorcentajePago") = "100"
|
|
ReRow("DiaInhabil") = "True"
|
|
ReRow("DiaInhabilStr") = TempDTValidaciones(0)("DiaInhabil").ToString()
|
|
ReRow("CveAsistenciasInasistencias") = CveAsistenciaInasistenciaDescanso
|
|
ReRow("PorcentajePago") = "100"
|
|
Else
|
|
ReRow("DiaInhabil") = "False"
|
|
ReRow("DiaInhabilStr") = ""
|
|
End If
|
|
|
|
TempDTValidaciones = DtVacaciones.FiltraParametros(" Fecha = '" & Fecha.ToString() & "' AND CvePersonal = " & dRow(0).ToString())
|
|
|
|
If TempDTValidaciones.Rows.Count > 0 Then
|
|
ReRow("DiaVacacion") = "True"
|
|
ReRow("CveAsistenciasInasistencias") = CveAsistenciaInasistenciaDescanso
|
|
ReRow("PorcentajePago") = "100"
|
|
|
|
Else
|
|
ReRow("DiaVacacion") = "False"
|
|
End If
|
|
|
|
|
|
If Fecha >= Now Then
|
|
ReRow("Asistio") = "True"
|
|
ReRow("CveAsistenciasInasistencias") = CveASistenciaInasistenciaAsistio
|
|
ReRow("PorcentajePago") = "100"
|
|
Else
|
|
|
|
If ReRow("DiaVacacion").ToString() <> "True" And ReRow("Descanso").ToString() <> "True" Then
|
|
|
|
If CountRegistros > 0 Then
|
|
|
|
FechaHoraRegistroEntrada = DateTime.Parse(tabladelDia(0)("FechaRegistro").ToString())
|
|
FechaHoraRegistroSalida = DateTime.Parse(tabladelDia(tabladelDia.Rows.Count - 1)("FechaRegistro").ToString())
|
|
|
|
If Not (FechaHoraRegistroEntrada - FechaHoraEntrada).TotalMinutes > TolFalEntradaMin Then
|
|
If (FechaHoraRegistroEntrada - FechaHoraEntrada).TotalMinutes > TolRetEntradaMin Then
|
|
|
|
Retardos = Retardos + 1
|
|
ReRow("Mensaje") = ReRow("Mensaje").ToString() & vbLf & "Retardo"
|
|
|
|
If Retardos >= TolRetAcumulados Then
|
|
ReRow("Asistio") = "False"
|
|
ReRow("FaltaRetardosAcumulados") = "True"
|
|
ReRow("Mensaje") = ReRow("Mensaje").ToString() & vbLf & " Falta por " & TolRetAcumulados & " acumulados. "
|
|
Retardos = 0
|
|
ReRow("CveAsistenciasInasistencias") = CveAsistenciaInasistenciaFalta
|
|
ReRow("PorcentajePago") = "0"
|
|
Else
|
|
ReRow("Asistio") = "True"
|
|
ReRow("Retraso") = "True"
|
|
ReRow("CveAsistenciasInasistencias") = CveAsistenciaInasistenciaRetardo
|
|
ReRow("PorcentajePago") = "100"
|
|
End If
|
|
Else
|
|
ReRow("Asistio") = "True"
|
|
ReRow("CveAsistenciasInasistencias") = CveASistenciaInasistenciaAsistio
|
|
ReRow("PorcentajePago") = "100"
|
|
End If
|
|
Else
|
|
Asistencia = False
|
|
ReRow("Mensaje") = ReRow("Mensaje").ToString() & vbLf & "Falta por retardo."
|
|
ReRow("FaltaRetraso") = "True"
|
|
ReRow("CveAsistenciasInasistencias") = CveAsistenciaInasistenciaFalta
|
|
ReRow("PorcentajePago") = "0"
|
|
End If
|
|
|
|
If FechahoraSalida > FechaHoraRegistroSalida Then
|
|
|
|
Dim diferenciasalidaMinutos As Integer = (FechahoraSalida - FechaHoraRegistroSalida).TotalMinutes.ToString().ToEntero
|
|
|
|
If RetSalidaAntes Then
|
|
If diferenciasalidaMinutos > TolSalidaAntesMin Then
|
|
|
|
ReRow("Asistio") = "True"
|
|
ReRow("Retraso") = "True"
|
|
ReRow("Mensaje") = ReRow("Mensaje").ToString() & vbLf & "Retraso por salida antes de tiempo (" & diferenciasalidaMinutos & " minutos)."
|
|
ReRow("CveAsistenciasInasistencias") = CveAsistenciaInasistenciaRetardo
|
|
ReRow("PorcentajePago") = "100"
|
|
Else
|
|
ReRow("Asistio") = "True"
|
|
ReRow("Retraso") = "False"
|
|
ReRow("Mensaje") = ReRow("Mensaje").ToString() & vbLf & "Salida antes de tiempo (" & diferenciasalidaMinutos & " minutos)."
|
|
ReRow("CveAsistenciasInasistencias") = CveASistenciaInasistenciaAsistio
|
|
ReRow("PorcentajePago") = "100"
|
|
|
|
End If
|
|
End If
|
|
End If
|
|
|
|
Else
|
|
ReRow("Asistio") = "False"
|
|
ReRow("CveAsistenciasInasistencias") = CveAsistenciaInasistenciaFalta
|
|
ReRow("PorcentajePago") = "0"
|
|
End If
|
|
End If
|
|
|
|
End If
|
|
|
|
If ReRow("Asistio").ToString() = "True" Then ReRow("PorcentajePago") = "100" Else ReRow("PorcentajePago") = "0"
|
|
|
|
|
|
Resultados.Rows.Add(ReRow)
|
|
Fecha = Fecha.AddDays(1)
|
|
|
|
Next x
|
|
Else
|
|
|
|
For x As Integer = 1 To (DiasPeriodo)
|
|
|
|
Dim ReRow As DataRow = Resultados.NewRow
|
|
|
|
ReRow("CvePersonal") = dRow(0).ToString()
|
|
ReRow("NombreCompleto") = dRow("NombreCompleto").ToString()
|
|
'ReRow("Codigo") = dRow("Codigo").ToString()
|
|
ReRow("CveSubProyecto") = dRow("CveSubProyecto").ToString()
|
|
ReRow("SalarioDiario") = dRow("SalarioDiario").ToString()
|
|
|
|
ReRow("CveAsistenciasInasistencias") = CveAsistenciaInasistenciaFalta
|
|
ReRow("PorcentajePago") = "0"
|
|
|
|
ReRow("Fecha") = Fecha.ToString()
|
|
ReRow("Retraso") = "False"
|
|
ReRow("Inconsistencia") = "False"
|
|
ReRow("Descanso") = "False"
|
|
ReRow("FaltaPorRetrasos") = "False"
|
|
ReRow("Entrada") = "ND"
|
|
ReRow("Salida") = "ND"
|
|
ReRow("Mensaje") = ""
|
|
ReRow("FaltaRetardosAcumulados") = "False"
|
|
ReRow("FaltaRetardosAcumulados") = "False"
|
|
ReRow("DiaInhabil") = "False"
|
|
ReRow("DiaInhabilStr") = ""
|
|
ReRow("DiaVacacion") = "False"
|
|
ReRow("CveAsistenciasInasistencias") = "-1"
|
|
ReRow("TipoCorto") = ""
|
|
ReRow("Sancion") = "False"
|
|
|
|
If dRow("CveChecadorHorario").ToString().ToEntero > 0 Then
|
|
|
|
DTHorarioPersonal = DTHorarios.FiltraParametros(" CveChecadorHorario = " & dRow("CveChecadorHorario").ToString().ToEntero & "")
|
|
|
|
If Fecha >= Now Then
|
|
ReRow("Asistio") = "True"
|
|
ReRow("CveAsistenciasInasistencias") = CveASistenciaInasistenciaAsistio
|
|
Else
|
|
ReRow("Asistio") = "False"
|
|
ReRow("CveAsistenciasInasistencias") = CveAsistenciaInasistenciaFalta
|
|
End If
|
|
|
|
Dim Horario As DataTable = HorarioDiario(Fecha, DTHorarioPersonal)
|
|
Dim DiaLaboral As Boolean = Boolean.Parse(Horario(0)(0).ToString())
|
|
|
|
If Not DiaLaboral Then
|
|
|
|
ReRow("CveAsistenciasInasistencias") = CveAsistenciaInasistenciaDescanso
|
|
ReRow("PorcentajePago") = "100"
|
|
ReRow("Descanso") = "True"
|
|
Else
|
|
|
|
Dim TempDTValidaciones As DataTable = DTDiasInhabiles.FiltraParametros(" FechaInhabil = '" & Fecha.ToString() & "'")
|
|
|
|
If TempDTValidaciones.Rows.Count > 0 Then
|
|
ReRow("DiaInhabil") = "True"
|
|
ReRow("DiaInhabilStr") = TempDTValidaciones(0)("DiaInhabil").ToString()
|
|
ReRow("CveAsistenciasInasistencias") = CveAsistenciaInasistenciaDescanso
|
|
ReRow("PorcentajePago") = "100"
|
|
Else
|
|
ReRow("DiaInhabil") = "False"
|
|
ReRow("DiaInhabilStr") = ""
|
|
ReRow("PorcentajePago") = "0"
|
|
End If
|
|
|
|
TempDTValidaciones = DtVacaciones.FiltraParametros(" Fecha = '" & Fecha.ToString() & "' AND CvePersonal = " & dRow(0).ToString())
|
|
|
|
If TempDTValidaciones.Rows.Count > 0 Then
|
|
ReRow("DiaVacacion") = "True"
|
|
ReRow("CveAsistenciasInasistencias") = CveAsistenciaInasistenciaDescanso
|
|
ReRow("PorcentajePago") = "100"
|
|
Else
|
|
ReRow("DiaVacacion") = "False"
|
|
End If
|
|
|
|
End If
|
|
|
|
End If
|
|
|
|
Resultados.Rows.Add(ReRow)
|
|
Fecha = Fecha.AddDays(1)
|
|
|
|
Next
|
|
|
|
End If
|
|
|
|
Next
|
|
Else
|
|
|
|
BtnAgregar.Visible = False
|
|
|
|
For Each dRow As DataRow In DtPersonal.Rows
|
|
Dim Fecha As Date = FechaInicioPeriodo
|
|
Dim ContadorFaltas As Integer = 0
|
|
Dim registrosPersonal As DataTable = DTAsistenciasInasistenciasReg.FiltraParametros(" CvePersonal = " & dRow(0).ToString())
|
|
|
|
If registrosPersonal.Rows.Count > 0 Then
|
|
|
|
For x As Integer = 1 To (DiasPeriodo)
|
|
|
|
Dim ReRow As DataRow = Resultados.NewRow
|
|
ReRow("CvePersonal") = dRow(0).ToString()
|
|
ReRow("NombreCompleto") = dRow("NombreCompleto").ToString()
|
|
'ReRow("Codigo") = dRow("Codigo").ToString()
|
|
ReRow("CveSubProyecto") = dRow("CveSubProyecto").ToString()
|
|
ReRow("SalarioDiario") = dRow("SalarioDiario").ToString()
|
|
|
|
ReRow("CveAsistenciasInasistencias") = "-1"
|
|
ReRow("PorcentajePago") = "0"
|
|
ReRow("Fecha") = Fecha.ToString()
|
|
ReRow("Retraso") = "False"
|
|
ReRow("Asistio") = "True"
|
|
ReRow("Inconsistencia") = "False"
|
|
ReRow("Descanso") = "False"
|
|
ReRow("Entrada") = "ND"
|
|
ReRow("Salida") = "ND"
|
|
ReRow("FaltaRetraso") = "False"
|
|
ReRow("FaltaPorRetrasos") = "False"
|
|
ReRow("DiaInhabil") = "False"
|
|
ReRow("Mensaje") = ""
|
|
ReRow("FaltaRetardosAcumulados") = "False"
|
|
ReRow("DiaInhabil") = "False"
|
|
ReRow("DiaInhabilStr") = ""
|
|
ReRow("DiaVacacion") = "False"
|
|
ReRow("CveAsistenciasInasistencias") = "-1"
|
|
ReRow("TipoCorto") = ""
|
|
ReRow("Sancion") = "False"
|
|
|
|
Dim diaSemana As Integer = Fecha.DayOfWeek
|
|
Dim Asistencia As Boolean = True
|
|
|
|
Dim tabladelDia As DataTable = registrosPersonal.FiltraParametros(" CvePersonal = " & dRow(0).ToString() & " AND Fecha = '" & Fecha.ToShortDateString & "'")
|
|
|
|
If tabladelDia.Rows.Count > 0 Then
|
|
ReRow("TipoCorto") = tabladelDia(0)("TipoCorto").ToString()
|
|
ReRow("CveAsistenciasInasistencias") = tabladelDia(0)("CveAsistenciasInasistencias").ToString()
|
|
Else
|
|
ReRow("Asistio") = "False"
|
|
ReRow("TipoCorto") = "F"
|
|
ReRow("CveAsistenciasInasistencias") = "-1"
|
|
End If
|
|
|
|
If ReRow("Asistio").ToString() = "True" Then ReRow("PorcentajePago") = "100" Else ReRow("PorcentajePago") = "0"
|
|
Resultados.Rows.Add(ReRow)
|
|
Fecha = Fecha.AddDays(1)
|
|
|
|
Next x
|
|
Else
|
|
For x As Integer = 1 To (DiasPeriodo)
|
|
|
|
Dim ReRow As DataRow = Resultados.NewRow
|
|
|
|
ReRow("CvePersonal") = dRow(0).ToString()
|
|
ReRow("NombreCompleto") = dRow("NombreCompleto").ToString()
|
|
ReRow("CveSubProyecto") = dRow("CveSubProyecto").ToString()
|
|
ReRow("SalarioDiario") = dRow("SalarioDiario").ToString()
|
|
'ReRow("Codigo") = dRow("Codigo").ToString()
|
|
ReRow("CveAsistenciasInasistencias") = CveAsistenciaInasistenciaFalta
|
|
ReRow("PorcentajePago") = "0"
|
|
ReRow("Asistio") = "False"
|
|
ReRow("Fecha") = Fecha.ToString()
|
|
ReRow("Retraso") = "False"
|
|
ReRow("Inconsistencia") = "False"
|
|
ReRow("Descanso") = "False"
|
|
ReRow("FaltaPorRetrasos") = "False"
|
|
ReRow("Entrada") = "ND"
|
|
ReRow("Salida") = "ND"
|
|
ReRow("Mensaje") = ""
|
|
ReRow("FaltaRetardosAcumulados") = "False"
|
|
ReRow("FaltaRetardosAcumulados") = "False"
|
|
ReRow("DiaInhabil") = "False"
|
|
ReRow("DiaInhabilStr") = ""
|
|
ReRow("DiaVacacion") = "False"
|
|
ReRow("CveAsistenciasInasistencias") = "-1"
|
|
ReRow("TipoCorto") = ""
|
|
|
|
|
|
If ReRow("Asistio").ToString() = "True" Then ReRow("PorcentajePago") = "100" Else ReRow("PorcentajePago") = "0"
|
|
Resultados.Rows.Add(ReRow)
|
|
Fecha = Fecha.AddDays(1)
|
|
|
|
Next
|
|
End If
|
|
|
|
Next
|
|
|
|
End If
|
|
|
|
'Primera parte del proceso terminada
|
|
|
|
DtResultados = Resultados
|
|
|
|
dt.Columns.Add("CvePersonal")
|
|
dt.Columns.Add("NombreCompleto")
|
|
'dt.Columns.Add("Codigo")
|
|
dt.Columns.Add("Fecha1")
|
|
dt.Columns.Add("Fecha2")
|
|
dt.Columns.Add("Fecha3")
|
|
dt.Columns.Add("Fecha4")
|
|
dt.Columns.Add("Fecha5")
|
|
dt.Columns.Add("Fecha6")
|
|
dt.Columns.Add("Fecha7")
|
|
dt.Columns.Add("Fecha8")
|
|
dt.Columns.Add("Fecha9")
|
|
dt.Columns.Add("Fecha10")
|
|
dt.Columns.Add("Fecha11")
|
|
dt.Columns.Add("Fecha12")
|
|
dt.Columns.Add("Fecha13")
|
|
dt.Columns.Add("Fecha14")
|
|
dt.Columns.Add("Fecha15")
|
|
dt.Columns.Add("Fecha16")
|
|
dt.Columns.Add("Fecha17")
|
|
dt.Columns.Add("Fecha18")
|
|
dt.Columns.Add("Fecha19")
|
|
dt.Columns.Add("Fecha20")
|
|
dt.Columns.Add("Fecha21")
|
|
dt.Columns.Add("Fecha22")
|
|
dt.Columns.Add("Fecha23")
|
|
dt.Columns.Add("Fecha24")
|
|
dt.Columns.Add("Fecha25")
|
|
dt.Columns.Add("Fecha26")
|
|
dt.Columns.Add("Fecha27")
|
|
dt.Columns.Add("Fecha28")
|
|
dt.Columns.Add("Fecha29")
|
|
dt.Columns.Add("Fecha30")
|
|
dt.Columns.Add("Fecha31")
|
|
|
|
Dim DTFechas As DataTable
|
|
Dim DTUPersonal As DataTable
|
|
|
|
Dim DTVFechas As New DataView(DtResultados)
|
|
DTFechas = DTVFechas.ToTable(True, "Fecha")
|
|
DTUPersonal = DTVFechas.ToTable(True, {"CvePersonal", "NombreCompleto"})
|
|
|
|
Dim ColumN As Integer = (dt.Columns.Count) - 2
|
|
|
|
For x As Integer = 3 To dt.Columns.Count
|
|
GVRegDatos.Columns(x).HeaderText = ""
|
|
GVRegDatos.Columns(x).Visible = False
|
|
Next
|
|
UpDatos.Update()
|
|
|
|
ColumN = 3
|
|
|
|
For Each drow As DataRow In DTFechas.Rows
|
|
GVRegDatos.Columns(ColumN).HeaderText = String.Format("<div class='Widthall' style='text-align:center;font-size:11px!important'>{1}</div><div class='Widthall' style='text-align:center'> {0} </div>", drow(0).ToString().ToDate.ToString("dd/MM/yyyy"), ObtenerDiaSemana(drow(0).ToString().ToDate))
|
|
GVRegDatos.Columns(ColumN).Visible = True
|
|
ColumN = ColumN + 1
|
|
Next
|
|
|
|
Dim medida As DateTime = Now
|
|
|
|
For Each pRow As DataRow In DtPersonal.Rows
|
|
|
|
Dim RRow As DataRow = dt.NewRow
|
|
RRow("CvePersonal") = pRow("CvePersonal")
|
|
RRow("NombreCompleto") = pRow("NombreCompleto")
|
|
'RRow("Codigo") = pRow("Codigo")
|
|
|
|
ColumN = 2
|
|
|
|
Dim ResumenDia As New DataTable
|
|
Dim DTTempAsistencias As New DataTable
|
|
Dim filtro As String
|
|
Dim TipoCorto As String = ""
|
|
|
|
For Each drow As DataRow In DTFechas.Rows
|
|
|
|
filtro = " CvePersonal = " & pRow("CvePersonal").ToString() & " AND Fecha ='" & drow(0).ToString() & "' "
|
|
ResumenDia = DtResultados.FiltraParametros(filtro)
|
|
|
|
TipoCorto = ""
|
|
|
|
If RdbChecador.Checked Then
|
|
|
|
RRow(ColumN) = "-"
|
|
|
|
If ResumenDia(0)("Asistio").ToString() = "True" Or ResumenDia(0)("TipoCorto").ToString() = "A" Then
|
|
RRow(ColumN) = "A|" & filtro
|
|
End If
|
|
|
|
If ResumenDia(0)("DiaVacacion").ToString() = "True" Or ResumenDia(0)("TipoCorto").ToString() = "V" Then
|
|
RRow(ColumN) = "V|" & filtro
|
|
End If
|
|
|
|
If ResumenDia(0)("Asistio").ToString() = "False" Or ResumenDia(0)("TipoCorto").ToString() = "F" Then
|
|
RRow(ColumN) = "F|" & filtro
|
|
End If
|
|
|
|
If ResumenDia(0)("Retraso").ToString() = "True" Or ResumenDia(0)("TipoCorto").ToString() = "R" Then
|
|
RRow(ColumN) = "R|" & filtro
|
|
End If
|
|
|
|
If ResumenDia(0)("FaltaRetraso").ToString() = "True" Or TipoCorto = "FR" Then
|
|
RRow(ColumN) = "FR|" & filtro
|
|
End If
|
|
|
|
If ResumenDia(0)("Descanso").ToString() = "True" Or ResumenDia(0)("DiaInhabil").ToString() = "True" Then
|
|
RRow(ColumN) = "D|" & filtro
|
|
End If
|
|
|
|
If ResumenDia(0)("Inconsistencia").ToString() = "True" Then
|
|
RRow(ColumN) = "IN|" & filtro
|
|
If ResumenDia(0)("Descanso").ToString() = "True" Then
|
|
RRow(ColumN) = "IND|" & filtro
|
|
End If
|
|
End If
|
|
Else
|
|
|
|
DTTempAsistencias = DTAsistenciasInasistenciasReg.FiltraParametros(filtro)
|
|
If DTTempAsistencias.Rows.Count > 0 Then
|
|
TipoCorto = DTTempAsistencias(0)("TipoCorto").ToString()
|
|
Else
|
|
TipoCorto = "F"
|
|
End If
|
|
|
|
RRow(ColumN) = "" & TipoCorto & "|" & filtro
|
|
|
|
End If
|
|
|
|
ColumN = ColumN + 1
|
|
|
|
Next
|
|
|
|
ResumenDia.Dispose()
|
|
DTTempAsistencias.Dispose()
|
|
|
|
dt.Rows.Add(RRow)
|
|
|
|
Next
|
|
|
|
|
|
Dim SalidaTiempo As Integer = (Now - medida).TotalSeconds.ToString().ToEntero
|
|
SalidaTiempo = SalidaTiempo
|
|
DtDatosTabla = dt
|
|
|
|
Else
|
|
DtDatosTabla = Nothing
|
|
objRH.Dispose()
|
|
End If
|
|
|
|
GvBind()
|
|
|
|
End Sub
|
|
|
|
Private Sub GvBind()
|
|
|
|
If DtDatosTabla.Rows.Count > 0 Then
|
|
'BtnAgregar.Visible = True
|
|
GVRegDatos.DataSource = DtDatosTabla
|
|
Else
|
|
'BtnAgregar.Visible = False
|
|
GVRegDatos.DataSource = Nothing
|
|
End If
|
|
|
|
GVRegDatos.DataBind()
|
|
UpDatos.Update()
|
|
|
|
End Sub
|
|
|
|
Private Sub ReprocesarTabla()
|
|
Dim dt As New DataTable
|
|
Dim DtPersonal As New DataTable
|
|
Dim DTAsistenciasInasistencias As New DataTable
|
|
|
|
|
|
Dim objRH As New ClsRH
|
|
|
|
|
|
If objRH.GetPersonalAsistenciaRegistros(FechaInicioPeriodo, FechaFinPeriodo, UsuarioActual.CveEmpresa) Then
|
|
DTAsistenciasInasistencias = objRH.DtResultados
|
|
End If
|
|
|
|
DtPersonal = GlobalDTRHPersonal(UsuarioActual.Empresa.CveEmpresa).FiltraParametros($" CveTipoPeriodo = { DdlTipoPeriodo.SelectedValue} AND CveEstado = 1 " & If(DdlTurno.SelectedValue = "-1", "", $" AND CveTurno = {DdlTurno.SelectedValue}"))
|
|
dt.Columns.Add("CvePersonal")
|
|
dt.Columns.Add("NombreCompleto")
|
|
'dt.Columns.Add("Codigo")
|
|
dt.Columns.Add("Fecha1")
|
|
dt.Columns.Add("Fecha2")
|
|
dt.Columns.Add("Fecha3")
|
|
dt.Columns.Add("Fecha4")
|
|
dt.Columns.Add("Fecha5")
|
|
dt.Columns.Add("Fecha6")
|
|
dt.Columns.Add("Fecha7")
|
|
dt.Columns.Add("Fecha8")
|
|
dt.Columns.Add("Fecha9")
|
|
dt.Columns.Add("Fecha10")
|
|
dt.Columns.Add("Fecha11")
|
|
dt.Columns.Add("Fecha12")
|
|
dt.Columns.Add("Fecha13")
|
|
dt.Columns.Add("Fecha14")
|
|
dt.Columns.Add("Fecha15")
|
|
dt.Columns.Add("Fecha16")
|
|
dt.Columns.Add("Fecha17")
|
|
dt.Columns.Add("Fecha18")
|
|
dt.Columns.Add("Fecha19")
|
|
dt.Columns.Add("Fecha20")
|
|
dt.Columns.Add("Fecha21")
|
|
dt.Columns.Add("Fecha22")
|
|
dt.Columns.Add("Fecha23")
|
|
dt.Columns.Add("Fecha24")
|
|
dt.Columns.Add("Fecha25")
|
|
dt.Columns.Add("Fecha26")
|
|
dt.Columns.Add("Fecha27")
|
|
dt.Columns.Add("Fecha28")
|
|
dt.Columns.Add("Fecha29")
|
|
dt.Columns.Add("Fecha30")
|
|
dt.Columns.Add("Fecha31")
|
|
|
|
Dim DTFechas As DataTable
|
|
Dim DTUPersonal As DataTable
|
|
Dim DTVFechas As New DataView(DtResultados)
|
|
DTFechas = DTVFechas.ToTable(True, "Fecha")
|
|
DTUPersonal = DTVFechas.ToTable(True, {"CvePersonal", "NombreCompleto"})
|
|
|
|
Dim ColumN As Integer = (dt.Columns.Count) - 2
|
|
|
|
For x As Integer = 3 To ColumN - 1
|
|
GVRegDatos.Columns(x).HeaderText = ""
|
|
GVRegDatos.Columns(x).Visible = False
|
|
Next
|
|
|
|
ColumN = 3
|
|
For Each drow As DataRow In DTFechas.Rows
|
|
GVRegDatos.Columns(ColumN).HeaderText = String.Format("<div class='Widthall' style='text-align:center;font-size:11px!important'>{1}</div><div class='Widthall' style='text-align:center'> {0} </div>", drow(0).ToString().ToDate.ToString("dd/MM/yyyy"), ObtenerDiaSemana(drow(0).ToString().ToDate))
|
|
GVRegDatos.Columns(ColumN).Visible = True
|
|
ColumN = ColumN + 1
|
|
Next
|
|
|
|
For Each pRow As DataRow In DtPersonal.Rows
|
|
|
|
Dim RRow As DataRow = dt.NewRow
|
|
RRow("CvePersonal") = pRow("CvePersonal")
|
|
RRow("NombreCompleto") = pRow("NombreCompleto")
|
|
'RRow("Codigo") = pRow("Codigo")
|
|
|
|
ColumN = 2
|
|
For Each drow As DataRow In DTFechas.Rows
|
|
|
|
Dim filtro As String = " CvePersonal = " & pRow("CvePersonal").ToString() & " AND Fecha ='" & drow(0).ToString() & "' "
|
|
Dim ResumenDia As DataTable = DtResultados.FiltraParametros(" CvePersonal = " & pRow("CvePersonal").ToString() & " AND Fecha ='" & drow(0).ToString() & "' ")
|
|
|
|
Dim DTTempAsistencias As DataTable = DTAsistenciasInasistencias.FiltraParametros(" CvePersonal = " & pRow("CvePersonal").ToString() & " AND Fecha ='" & drow(0).ToString() & "' ")
|
|
Dim TipoCorto As String = ""
|
|
|
|
If DTTempAsistencias.Rows.Count > 1 Then
|
|
TipoCorto = DTTempAsistencias(0)("TipoCorto").ToString()
|
|
End If
|
|
|
|
If TipoCorto <> "" Then
|
|
|
|
If TipoCorto = "F" Then
|
|
RRow(ColumN) = "F" & "|" & filtro
|
|
End If
|
|
|
|
If TipoCorto = "R" Then
|
|
RRow(ColumN) = "R" & "|" & filtro
|
|
Else
|
|
If TipoCorto = "A" Then
|
|
RRow(ColumN) = "A" & "|" & filtro
|
|
Else
|
|
If TipoCorto = "D" Then
|
|
RRow(ColumN) = "D" & "|" & filtro
|
|
Else
|
|
|
|
If TipoCorto = "V" Then
|
|
RRow(ColumN) = "V" & "|" & filtro
|
|
Else
|
|
If TipoCorto = "I" Then
|
|
RRow(ColumN) = "I" & "|" & filtro
|
|
Else
|
|
If TipoCorto = "S" Then
|
|
RRow(ColumN) = "S" & "|" & filtro
|
|
End If
|
|
|
|
End If
|
|
End If
|
|
End If
|
|
End If
|
|
End If
|
|
|
|
Else
|
|
|
|
RRow(ColumN) = "-"
|
|
|
|
If ResumenDia(0)("TipoCorto").ToString() = "" Then
|
|
|
|
If ResumenDia(0)("Asistio").ToString() = "True" Then
|
|
RRow(ColumN) = "A|" & filtro
|
|
End If
|
|
|
|
If ResumenDia(0)("DiaVacacion").ToString() = "True" Then
|
|
RRow(ColumN) = "V" & "|" & filtro
|
|
Else
|
|
If ResumenDia(0)("Asistio").ToString() = "False" Then
|
|
RRow(ColumN) = "F" & "|" & filtro
|
|
Else
|
|
If ResumenDia(0)("Retraso").ToString() = "True" Then
|
|
RRow(ColumN) = "R" & "|" & filtro
|
|
Else
|
|
If ResumenDia(0)("FaltaRetraso").ToString() = "True" Then
|
|
RRow(ColumN) = "FR" & "|" & filtro
|
|
lblModalMensaje.Text = "Falta por retardo"
|
|
Else
|
|
If ResumenDia(0)("Descanso").ToString() = "True" Then
|
|
RRow(ColumN) = "D" & "|" & filtro
|
|
Else
|
|
If ResumenDia(0)("Inconsistencia").ToString() = "True" Then
|
|
RRow(ColumN) = "IN" & "|" & filtro
|
|
|
|
If ResumenDia(0)("Descanso").ToString() = "True" Then
|
|
RRow(ColumN) = "IND" & "|" & filtro
|
|
Else
|
|
|
|
If ResumenDia(0)("TipoCorto").ToString() = "S" Then
|
|
RRow(ColumN) = "S" & "|" & filtro
|
|
|
|
Else
|
|
If ResumenDia(0)("TipoCorto").ToString() = "M" Then
|
|
RRow(ColumN) = "M" & "|" & filtro
|
|
|
|
End If
|
|
End If
|
|
|
|
|
|
End If
|
|
End If
|
|
End If
|
|
End If
|
|
End If
|
|
End If
|
|
End If
|
|
Else
|
|
|
|
If ResumenDia(0)("TipoCorto").ToString() = "A" Then
|
|
RRow(ColumN) = "A" & "|" & filtro
|
|
End If
|
|
|
|
If ResumenDia(0)("TipoCorto").ToString() = "V" Then
|
|
RRow(ColumN) = "V" & "|" & filtro
|
|
Else
|
|
If ResumenDia(0)("TipoCorto").ToString() = "F" Then
|
|
RRow(ColumN) = "F" & "|" & filtro
|
|
Else
|
|
|
|
If ResumenDia(0)("TipoCorto").ToString() = "R" Then
|
|
RRow(ColumN) = "R" & "|" & filtro
|
|
Else
|
|
If TipoCorto = "FR" Then
|
|
RRow(ColumN) = "FR" & "|" & filtro
|
|
lblModalMensaje.Text = "Falta por retardo"
|
|
Else
|
|
If ResumenDia(0)("TipoCorto").ToString() = "D" Then
|
|
RRow(ColumN) = "D" & "|" & filtro
|
|
|
|
End If
|
|
If ResumenDia(0)("TipoCorto").ToString() = "I" Then
|
|
RRow(ColumN) = "I" & "|" & filtro
|
|
Else
|
|
If ResumenDia(0)("TipoCorto").ToString() = "C" Then
|
|
RRow(ColumN) = "C" & "|" & filtro
|
|
Else
|
|
If ResumenDia(0)("TipoCorto").ToString() = "S" Then
|
|
RRow(ColumN) = "S" & "|" & filtro
|
|
Else
|
|
If ResumenDia(0)("TipoCorto").ToString() = "M" Then
|
|
RRow(ColumN) = "M" & "|" & filtro
|
|
End If
|
|
End If
|
|
|
|
End If
|
|
End If
|
|
End If
|
|
End If
|
|
End If
|
|
End If
|
|
End If
|
|
|
|
End If
|
|
ColumN = ColumN + 1
|
|
Next
|
|
dt.Rows.Add(RRow)
|
|
Next
|
|
Dim stopp As Integer = 0
|
|
DtDatosTabla = dt
|
|
End Sub
|
|
|
|
Private Function HorarioDiario(Fecha As Date, DTHorarioPersonal As DataTable) As DataTable
|
|
Dim respuesta As New DataTable
|
|
respuesta.Columns.Add("TRABAJO", System.Type.GetType("System.Boolean"))
|
|
|
|
respuesta.Columns.Add("ENTRADA", System.Type.GetType("System.TimeSpan"))
|
|
respuesta.Columns.Add("SALIDACOMIDA", System.Type.GetType("System.TimeSpan"))
|
|
respuesta.Columns.Add("ENTRADACOMIDA", System.Type.GetType("System.TimeSpan"))
|
|
respuesta.Columns.Add("SALIDA", System.Type.GetType("System.TimeSpan"))
|
|
Dim Drow As DataRow = respuesta.NewRow
|
|
Dim drp As DataRow = Nothing
|
|
If DTHorarioPersonal.Rows.Count > 0 Then
|
|
drp = DTHorarioPersonal(0)
|
|
End If
|
|
|
|
Dim diaSemana As Integer = Fecha.DayOfWeek
|
|
|
|
Select Case diaSemana
|
|
Case 0
|
|
Drow(0) = Boolean.Parse(If(IsNothing(drp), "true", drp("Domingo").ToString()))
|
|
Drow(1) = TimeSpan.Parse(If(IsNothing(drp), "00:00", drp("DomingoEntrada").ToString()))
|
|
Drow(2) = TimeSpan.Parse(If(IsNothing(drp), "00:00", drp("DomingoSalidaComida").ToString()))
|
|
Drow(3) = TimeSpan.Parse(If(IsNothing(drp), "00:00", drp("DomingoEntradaComida").ToString()))
|
|
Drow(4) = TimeSpan.Parse(If(IsNothing(drp), "09:00", drp("DomingoSalida").ToString()))
|
|
|
|
Exit Select
|
|
Case 1
|
|
Drow(0) = Boolean.Parse(If(IsNothing(drp), "true", drp("Lunes").ToString()))
|
|
Drow(1) = TimeSpan.Parse(If(IsNothing(drp), "00:00", drp("LunesEntrada").ToString()))
|
|
Drow(2) = TimeSpan.Parse(If(IsNothing(drp), "00:00", drp("LunesSalidaComida").ToString()))
|
|
Drow(3) = TimeSpan.Parse(If(IsNothing(drp), "00:00", drp("LunesEntradaComida").ToString()))
|
|
Drow(4) = TimeSpan.Parse(If(IsNothing(drp), "09:00", drp("LunesSalida").ToString()))
|
|
Exit Select
|
|
Case 2
|
|
Drow(0) = Boolean.Parse(If(IsNothing(drp), "true", drp("Martes").ToString()))
|
|
Drow(1) = TimeSpan.Parse(If(IsNothing(drp), "00:00", drp("MartesEntrada").ToString()))
|
|
Drow(2) = TimeSpan.Parse(If(IsNothing(drp), "00:00", drp("MartesSalidaComida").ToString()))
|
|
Drow(3) = TimeSpan.Parse(If(IsNothing(drp), "00:00", drp("MartesEntradaComida").ToString()))
|
|
Drow(4) = TimeSpan.Parse(If(IsNothing(drp), "09:00", drp("MartesSalida").ToString()))
|
|
Exit Select
|
|
Case 3
|
|
Drow(0) = Boolean.Parse(If(IsNothing(drp), "true", drp("Miercoles").ToString()))
|
|
Drow(1) = TimeSpan.Parse(If(IsNothing(drp), "00:00", drp("MiercolesEntrada").ToString()))
|
|
Drow(2) = TimeSpan.Parse(If(IsNothing(drp), "00:00", drp("MiercolesSalidaComida").ToString()))
|
|
Drow(3) = TimeSpan.Parse(If(IsNothing(drp), "00:00", drp("MiercolesEntradaComida").ToString()))
|
|
Drow(4) = TimeSpan.Parse(If(IsNothing(drp), "09:00", drp("MiercolesSalida").ToString()))
|
|
Exit Select
|
|
Case 4
|
|
Drow(0) = Boolean.Parse(If(IsNothing(drp), "true", drp("Jueves").ToString()))
|
|
Drow(1) = TimeSpan.Parse(If(IsNothing(drp), "00:00", drp("JuevesEntrada").ToString()))
|
|
Drow(2) = TimeSpan.Parse(If(IsNothing(drp), "00:00", drp("JuevesSalidaComida").ToString()))
|
|
Drow(3) = TimeSpan.Parse(If(IsNothing(drp), "00:00", drp("JuevesEntradaComida").ToString()))
|
|
Drow(4) = TimeSpan.Parse(If(IsNothing(drp), "09:00", drp("JuevesSalida").ToString()))
|
|
Exit Select
|
|
Case 5
|
|
Drow(0) = Boolean.Parse(If(IsNothing(drp), "true", drp("Viernes").ToString()))
|
|
Drow(1) = TimeSpan.Parse(If(IsNothing(drp), "00:00", drp("ViernesEntrada").ToString()))
|
|
Drow(2) = TimeSpan.Parse(If(IsNothing(drp), "00:00", drp("ViernesSalidaComida").ToString()))
|
|
Drow(3) = TimeSpan.Parse(If(IsNothing(drp), "00:00", drp("ViernesEntradaComida").ToString()))
|
|
Drow(4) = TimeSpan.Parse(If(IsNothing(drp), "09:00", drp("ViernesSalida").ToString()))
|
|
Exit Select
|
|
Case 6
|
|
Drow(0) = Boolean.Parse(If(IsNothing(drp), "False", drp("Sabado").ToString()))
|
|
Drow(1) = TimeSpan.Parse(If(IsNothing(drp), "00:00", drp("SabadoEntrada").ToString()))
|
|
Drow(2) = TimeSpan.Parse(If(IsNothing(drp), "00:00", drp("SabadoSalidaComida").ToString()))
|
|
Drow(3) = TimeSpan.Parse(If(IsNothing(drp), "00:00", drp("SabadoEntradaComida").ToString()))
|
|
Drow(4) = TimeSpan.Parse(If(IsNothing(drp), "09:00", drp("SabadoSalida").ToString()))
|
|
Exit Select
|
|
End Select
|
|
|
|
respuesta.Rows.Add(Drow)
|
|
|
|
Return respuesta
|
|
End Function
|
|
|
|
Protected Sub BtnConsultar_Click(sender As Object, e As EventArgs)
|
|
CargaDatos()
|
|
End Sub
|
|
|
|
Private Sub BtnModalFecha_Click(sender As Object, e As EventArgs) Handles BtnModalFecha.Click
|
|
|
|
CalculaPeriodos(New DataTable, DiasPeriodo, CveTipoPeriodo, TxtFechaModal.Text.ToDate)
|
|
TxtFechaModal.Text = ""
|
|
lblTituloPagina.Text = ""
|
|
UpTituloPagina.Update()
|
|
UpModalFechaBody.Update()
|
|
|
|
RegistraScript("$('#ModalModalFecha').modal('hide');")
|
|
End Sub
|
|
|
|
Function CalculaPeriodos(DTNomPeriodos As DataTable, DiasPeriodo As Integer, CveTipoPeriodo As Integer, Optional FechaInicialPeriodos As Date = Nothing) As DataTable
|
|
|
|
Dim DTRespuesta As New DataTable
|
|
Dim FechaLoop As Date
|
|
Dim peridos As String = ""
|
|
Dim ContadorOrden As Integer = 0
|
|
|
|
|
|
DTRespuesta.Columns.Add("Valor")
|
|
DTRespuesta.Columns.Add("Texto")
|
|
DTRespuesta.Columns.Add("Numero")
|
|
DTRespuesta.Columns.Add("Orden")
|
|
|
|
|
|
|
|
If DTNomPeriodos.Rows.Count > 0 Then
|
|
|
|
FechaInicialPeriodos = DTNomPeriodos(DTNomPeriodos.Rows.Count - 1)("FechaFin").ToString().ToDate
|
|
|
|
For Each Row As DataRow In DTNomPeriodos.Rows
|
|
Dim Drow As DataRow = DTRespuesta.NewRow
|
|
Drow("Valor") = Row("FechaInicio").ToString().ToDate().ToString("dd/MM/yyyy") & "-" & Row("FechaFin").ToString().ToDate.ToString("dd/MM/yyyy") & "-" & Row("Numero").ToString()
|
|
Drow("Texto") = Row("FechaInicio").ToString().ToDate().ToString("dd/MM/yyyy") & " - " & Row("FechaFin").ToString().ToDate.ToString("dd/MM/yyyy") & " #" & Row("Numero").ToString() & " Cerrado"
|
|
Drow("Numero") = Row("Numero").ToString()
|
|
Drow("Orden") = ContadorOrden.ToString()
|
|
DTRespuesta.Rows.Add(Drow)
|
|
ContadorOrden += 1
|
|
Next
|
|
|
|
End If
|
|
|
|
'Dim DPI As Integer = DiasPeriodo + 1
|
|
'Dim DPF As Integer = DiasPeriodo
|
|
Dim DiasPerdiodoInicial As Integer = DiasPeriodo
|
|
Dim primeraBuelta As Boolean = True
|
|
Dim DiaDelMesInicial As Integer = FechaInicialPeriodos.Day
|
|
|
|
If Not FechaInicialPeriodos = Nothing And DiasPeriodo > 0 Then
|
|
|
|
FechaLoop = FechaInicialPeriodos
|
|
|
|
While FechaLoop <= Now
|
|
Dim Drow As DataRow = DTRespuesta.NewRow
|
|
Drow("Orden") = ContadorOrden.ToString()
|
|
ContadorOrden += 1
|
|
|
|
'Quincenal
|
|
If CveTipoPeriodo = 4 Then
|
|
If FechaLoop.Day >= 15 Then
|
|
DiasPeriodo = DateTime.DaysInMonth(FechaLoop.Year, FechaLoop.Month) - FechaLoop.Day
|
|
If DiasPeriodo = 0 Then
|
|
DiasPeriodo = 15
|
|
End If
|
|
Else
|
|
DiasPeriodo = 15
|
|
End If
|
|
|
|
If primeraBuelta Then
|
|
peridos = FechaLoop.ToString("dd/MM/yyyy") & " - " & FechaLoop.AddDays(DiasPeriodo - 1).ToString("dd/MM/yyyy")
|
|
primeraBuelta = False
|
|
|
|
FechaLoop = FechaLoop.AddDays(DiasPeriodo - 1)
|
|
|
|
Else
|
|
peridos = FechaLoop.AddDays(1).ToString("dd/MM/yyyy") & " - " & FechaLoop.AddDays(DiasPeriodo).ToString("dd/MM/yyyy")
|
|
FechaLoop = FechaLoop.AddDays(DiasPeriodo)
|
|
End If
|
|
End If
|
|
|
|
'Mensual
|
|
If CveTipoPeriodo = 5 Then
|
|
|
|
DiasPeriodo = FechaLoop.LastDayOfMonth.Day
|
|
Dim diasMes = DateTime.DaysInMonth(FechaLoop.Year, FechaLoop.Month)
|
|
|
|
If DiaDelMesInicial > diasMes Then
|
|
FechaLoop = New Date(FechaLoop.Year, FechaLoop.Month, diasMes)
|
|
Else
|
|
FechaLoop = New Date(FechaLoop.Year, FechaLoop.Month, DiaDelMesInicial)
|
|
End If
|
|
|
|
|
|
peridos = FechaLoop.ToString("dd/MM/yyyy") & " - " & FechaLoop.AddMonths(1).AddDays(-1).ToString("dd/MM/yyyy")
|
|
|
|
|
|
|
|
FechaLoop = FechaLoop.AddMonths(1)
|
|
|
|
End If
|
|
|
|
If CveTipoPeriodo < 4 Then
|
|
|
|
Dim anioActual As Integer = FechaLoop.Year
|
|
Dim AnioDiasPeriodo As Integer = FechaLoop.AddDays(DiasPeriodo).Year
|
|
|
|
If anioActual <> AnioDiasPeriodo Then
|
|
DiasPeriodo = DateTime.DaysInMonth(FechaLoop.Year, FechaLoop.Month) - FechaLoop.Day
|
|
If DiasPeriodo = 0 Then
|
|
DiasPeriodo = DiasPerdiodoInicial
|
|
End If
|
|
End If
|
|
|
|
|
|
If primeraBuelta Then
|
|
peridos = FechaLoop.ToString("dd/MM/yyyy") & " - " & FechaLoop.AddDays(DiasPeriodo - 1).ToString("dd/MM/yyyy")
|
|
primeraBuelta = False
|
|
|
|
FechaLoop = FechaLoop.AddDays(DiasPeriodo - 1)
|
|
|
|
Else
|
|
peridos = FechaLoop.AddDays(1).ToString("dd/MM/yyyy") & " - " & FechaLoop.AddDays(DiasPeriodo).ToString("dd/MM/yyyy")
|
|
FechaLoop = FechaLoop.AddDays(DiasPeriodo)
|
|
End If
|
|
|
|
End If
|
|
|
|
Drow(0) = peridos
|
|
Drow(1) = peridos & " Abierto"
|
|
DTRespuesta.Rows.Add(Drow)
|
|
|
|
End While
|
|
End If
|
|
|
|
Dim DtRespuestaView As DataView = DTRespuesta.DefaultView
|
|
DtRespuestaView.Sort = "orden desc"
|
|
|
|
DTRespuesta = DtRespuestaView.ToTable
|
|
|
|
DdlRango.DataSource = DTRespuesta
|
|
DdlRango.DataBind()
|
|
DdlRango.Items.Insert(0, New ListItem("Seleccionar uno", "-1"))
|
|
'DdlRango.Visible = True
|
|
'LblPeriodo.Visible = True
|
|
UPFiltros.Update()
|
|
|
|
Return DTRespuesta
|
|
|
|
End Function
|
|
|
|
Protected Sub GVRegDatos_RowDataBound(sender As Object, e As GridViewRowEventArgs) Handles GVRegDatos.RowDataBound
|
|
|
|
If e.Row.RowType = DataControlRowType.DataRow Then
|
|
|
|
Dim CountFecha As Integer = 1
|
|
Dim Instruccion As String = ""
|
|
Dim Filtro As String = ""
|
|
Dim lblFaltas As Label = e.Row.FCLabel("lblFaltas")
|
|
lblFaltas.Font.Bold = True
|
|
Dim ContadorFaltas As Integer = 0
|
|
|
|
Dim lnkLink As LinkButton
|
|
Dim NombreLink As String
|
|
Dim separador As Char()
|
|
Dim arrayComands As String()
|
|
|
|
For x As Integer = 3 To 33
|
|
|
|
NombreLink = "LnkFecha" & CountFecha
|
|
|
|
lnkLink = e.Row.FCLinkButton(NombreLink)
|
|
separador = {"|"c}
|
|
arrayComands = lnkLink.Text.Split(separador)
|
|
Instruccion = arrayComands(0)
|
|
|
|
If arrayComands.Length > 1 Then Filtro = arrayComands(1) Else Filtro = ""
|
|
|
|
lnkLink.CommandArgument = lnkLink.Text
|
|
|
|
If Instruccion = "-" Then
|
|
lnkLink.Text = "<i class='fa fa-check-square' aria-hidden='true'></i>"
|
|
lnkLink.ForeColor = Drawing.Color.Green
|
|
lnkLink.ToolTip = "Asistencia"
|
|
lnkLink.Font.Bold = True
|
|
End If
|
|
|
|
If Instruccion = "A" Then
|
|
lnkLink.Text = "<i class='fa fa-check-square' aria-hidden='true'></i>"
|
|
lnkLink.ForeColor = Drawing.Color.Green
|
|
lnkLink.ToolTip = "Asistencia"
|
|
lnkLink.Font.Bold = True
|
|
|
|
End If
|
|
|
|
If Instruccion = "F" Then
|
|
lnkLink.Text = "<i class='fa fa-exclamation' aria-hidden='True'></i>"
|
|
lnkLink.ToolTip = "Falta"
|
|
lnkLink.ForeColor = Drawing.Color.Red
|
|
ContadorFaltas = ContadorFaltas + 1
|
|
End If
|
|
|
|
If Instruccion = "FR" Then
|
|
lnkLink.Text = "<i class='fa fa-clock-o' aria-hidden='true'></i>"
|
|
lnkLink.ToolTip = "Falta por (Retardo)"
|
|
lnkLink.ForeColor = Drawing.Color.Red
|
|
ContadorFaltas = ContadorFaltas + 1
|
|
End If
|
|
|
|
If Instruccion = "D" Or Instruccion = "V" Then
|
|
lnkLink.Text = "<i Class='fa fa-sun-o' aria-hidden='true'></i>"
|
|
lnkLink.ToolTip = "Dia de descanso/no laboral/Vacación"
|
|
lnkLink.ForeColor = Drawing.Color.Green
|
|
End If
|
|
|
|
If Instruccion = "DI" Or Instruccion = "V" Then
|
|
lnkLink.Text = "<i Class='fa fa-sun-o' aria-hidden='true'></i>"
|
|
lnkLink.ToolTip = "Dia de descanso/no laboral/Vacación"
|
|
lnkLink.ForeColor = Drawing.Color.DarkOrange
|
|
End If
|
|
|
|
If Instruccion = "IN" Then
|
|
lnkLink.Text = "<i class='fa fa-exclamation-triangle' aria-hidden='true'></i>"
|
|
lnkLink.ToolTip = "Inconsistencia"
|
|
lnkLink.ForeColor = Drawing.Color.DarkOrange
|
|
lnkLink.Font.Bold = True
|
|
End If
|
|
|
|
If Instruccion = "IND" Then
|
|
lnkLink.Text = "<i class='fa fa-sun-o' aria-hidden='true'></i>"
|
|
lnkLink.ToolTip = "Asistencia en dia no laboral/Descanso"
|
|
lnkLink.ForeColor = Drawing.Color.DarkOrange
|
|
lnkLink.Font.Bold = True
|
|
End If
|
|
|
|
If Instruccion = "R" Then
|
|
lnkLink.Text = "<i class='fa fa-clock-o' aria-hidden='true'></i>"
|
|
lnkLink.ToolTip = "Retardo"
|
|
lnkLink.ForeColor = Drawing.Color.DarkOrange
|
|
lnkLink.Font.Bold = True
|
|
End If
|
|
|
|
If Instruccion = "D" Then
|
|
lnkLink.Text = "<i Class='fa fa-sun-o' aria-hidden='true'></i>"
|
|
lnkLink.ToolTip = "Dia de descanso/no laboral"
|
|
lnkLink.ForeColor = Drawing.Color.Green
|
|
End If
|
|
|
|
|
|
If Instruccion = "V" Then
|
|
lnkLink.Text = "<i Class='fa fa-sun-o' aria-hidden='true'></i>"
|
|
lnkLink.ToolTip = "Dia de descanso/no laboral"
|
|
lnkLink.ForeColor = Drawing.Color.Green
|
|
End If
|
|
|
|
If Instruccion = "I" Then
|
|
lnkLink.Text = "<i Class='fa fa-medkit' aria-hidden='true'></i>"
|
|
lnkLink.ToolTip = "Incapacidad"
|
|
lnkLink.ForeColor = Drawing.Color.Green
|
|
lnkLink.Font.Bold = True
|
|
End If
|
|
|
|
If Instruccion = "M" Then
|
|
lnkLink.Text = "<i Class='fa fa-medkit' aria-hidden='true'></i>"
|
|
lnkLink.ToolTip = "Medico"
|
|
lnkLink.ForeColor = Drawing.Color.Green
|
|
lnkLink.Font.Bold = True
|
|
End If
|
|
|
|
If Instruccion = "C" Then
|
|
lnkLink.Text = "<i class='fa fa-exclamation-triangle' aria-hidden='true'></i>"
|
|
lnkLink.ToolTip = "Castigo."
|
|
lnkLink.ForeColor = Drawing.Color.Red
|
|
lnkLink.Font.Bold = True
|
|
End If
|
|
|
|
If Instruccion = "S" Then
|
|
lnkLink.Text = "<i class='fa fa-exclamation-triangle' aria-hidden='true'></i>"
|
|
lnkLink.ToolTip = "Sanción."
|
|
lnkLink.ForeColor = Drawing.Color.Red
|
|
lnkLink.Font.Bold = True
|
|
End If
|
|
|
|
If Filtro.Length > 0 Then
|
|
AddHandler lnkLink.Click, AddressOf Me.DetalleDia_Click
|
|
End If
|
|
CountFecha = CountFecha + 1
|
|
Next
|
|
|
|
If ContadorFaltas > 0 Then
|
|
lblFaltas.Text = "" & ContadorFaltas
|
|
Else
|
|
lblFaltas.Text = "-"
|
|
End If
|
|
End If
|
|
End Sub
|
|
|
|
Public Sub DetalleDia_Click(sender As Object, e As EventArgs)
|
|
|
|
Dim lnkLinkSender As LinkButton = DirectCast(sender, LinkButton)
|
|
Dim DTDatos As New DataTable
|
|
Dim DTTipoAsistenciaInasistencia As DataTable
|
|
|
|
Dim Instruccion As String = ""
|
|
Dim Filtro As String = ""
|
|
Dim CveEstado As Integer = -1
|
|
Dim DTChecadorRegistros As New DataTable
|
|
Dim separador() As Char = {"|"c}
|
|
Dim arrayComands As String() = lnkLinkSender.CommandArgument.Split(separador)
|
|
|
|
Dim objRH As New ClsRH
|
|
|
|
If objRH.PreAsistenciaRegistrosGet(FechaInicioPeriodo, FechaFinPeriodo, DdlTurno.SelectedValue.ToEntero, UsuarioActual.Empresa.CveEmpresa) Then
|
|
DTChecadorRegistros = objRH.DtResultados
|
|
End If
|
|
|
|
objRH.Dispose()
|
|
|
|
Instruccion = arrayComands(0)
|
|
DTTipoAsistenciaInasistencia = GlobalDTAsistenciasInasistencias.FiltraParametros(" CveEmpresa = " & UsuarioActual.Empresa.CveEmpresa & " AND TipoCorto = '" & Instruccion & "' ")
|
|
|
|
If DTTipoAsistenciaInasistencia.Rows.Count > 0 Then
|
|
CveEstado = DTTipoAsistenciaInasistencia(0)(0).ToString().ToEntero
|
|
Else
|
|
CveEstado = -1
|
|
End If
|
|
|
|
If arrayComands.Length > 1 Then Filtro = arrayComands(1) Else Filtro = ""
|
|
|
|
If Filtro.Length > 1 Then
|
|
FiltroAplicado = Filtro
|
|
DTDatos = DTChecadorRegistros.FiltraParametros(Filtro)
|
|
GvDetalleDias.DataSource = DTDatos
|
|
End If
|
|
|
|
GvDetalleDias.DataBind()
|
|
|
|
RegistraScript("$('#divDetallesDia').modal({ backdrop: 'static', keyboard: false});")
|
|
|
|
DTDatos = DtResultados.FiltraParametros(Filtro)
|
|
lblModalFecha.Text = DTDatos(0)("Fecha").ToString().ToDate.ToString("dd/MM/yyyy")
|
|
|
|
lnkModalImg.Text = ""
|
|
|
|
If Instruccion = "-" Or Instruccion = "A" Then
|
|
lnkModalImg.Text = "<i class='fa fa-check-square fa-3x' aria-hidden='true'></i>"
|
|
lnkModalImg.ForeColor = Drawing.Color.Green
|
|
lnkModalImg.ToolTip = "Asistencia"
|
|
lnkModalImg.Font.Bold = True
|
|
lblModalMensaje.Text = "Asistencia."
|
|
' CveEstado = CveAsistio
|
|
End If
|
|
|
|
If Instruccion = "F" Then
|
|
lnkModalImg.Text = "<i class='fa fa-exclamation fa-3x' aria-hidden='True'></i>"
|
|
lnkModalImg.ToolTip = "Falta"
|
|
lnkModalImg.ForeColor = Drawing.Color.Red
|
|
lblModalMensaje.Text = "Falta"
|
|
' CveEstado = CveFalto
|
|
End If
|
|
|
|
If Instruccion = "FR" Then
|
|
lnkModalImg.Text = "<i class='fa fa-clock-o fa-3x' aria-hidden='true'></i>"
|
|
lnkModalImg.ToolTip = "Falta por (Retardo)"
|
|
lnkModalImg.ForeColor = Drawing.Color.Red
|
|
lblModalMensaje.Text = "Falta por retardo."
|
|
' CveEstado = CveFalto
|
|
|
|
End If
|
|
|
|
If Instruccion = "D" Then
|
|
lnkModalImg.Text = "<i Class='fa fa-sun-o fa-3x' aria-hidden='true'></i>"
|
|
lnkModalImg.ToolTip = "Dia de descanso/no laboral"
|
|
lnkModalImg.ForeColor = Drawing.Color.Green
|
|
lblModalMensaje.Text = "Dia de descanso/dia no laboral."
|
|
'CveEstado = CveDescanso
|
|
End If
|
|
|
|
If Instruccion = "DI" Or Instruccion = "V" Then
|
|
lnkModalImg.Text = "<i Class='fa fa-sun-o' aria-hidden='true'></i>"
|
|
lnkModalImg.ToolTip = "Dia de descanso/no laboral/Vacación"
|
|
lnkModalImg.ForeColor = Drawing.Color.DarkOrange
|
|
lblModalMensaje.Text = "Se asistio en dia de descanso."
|
|
End If
|
|
|
|
If Instruccion = "IN" Then
|
|
lnkModalImg.Text = "<i class='fa fa-exclamation-triangle fa-3x' aria-hidden='true'></i>"
|
|
lnkModalImg.ToolTip = "Inconsistencia"
|
|
lnkModalImg.ForeColor = Drawing.Color.DarkOrange
|
|
lnkModalImg.Font.Bold = True
|
|
lblModalMensaje.Text = "Inconsistencia."
|
|
End If
|
|
|
|
If Instruccion = "I" Then
|
|
lnkModalImg.Text = "<i Class='fa fa-medkit' aria-hidden='true'></i>"
|
|
lnkModalImg.ToolTip = "Incapacidad"
|
|
lnkModalImg.ForeColor = Drawing.Color.Green
|
|
lnkModalImg.Font.Bold = True
|
|
lblModalMensaje.Text = "Incapacidad."
|
|
End If
|
|
|
|
If Instruccion = "V" Then
|
|
lnkModalImg.Text = "<i Class='fa fa-sun-o' aria-hidden='true'></i>"
|
|
lnkModalImg.ToolTip = "Vacación"
|
|
lnkModalImg.ForeColor = Drawing.Color.Green
|
|
lnkModalImg.Font.Bold = True
|
|
lblModalMensaje.Text = "Vacación."
|
|
End If
|
|
|
|
If Instruccion = "IND" Then
|
|
lnkModalImg.Text = "<i class='fa fa-sun-o fa-3x' aria-hidden='true'></i>"
|
|
lnkModalImg.ToolTip = "Asistencia en dia no laboral/Descanso"
|
|
lnkModalImg.ForeColor = Drawing.Color.DarkOrange
|
|
lnkModalImg.Font.Bold = True
|
|
lblModalMensaje.Text = "Asistencia en día de descanso/día no laboral."
|
|
End If
|
|
|
|
If Instruccion = "R" Then
|
|
lnkModalImg.Text = "<i class='fa fa-clock-o fa-3x' aria-hidden='true'></i>"
|
|
lnkModalImg.ToolTip = "Retardo"
|
|
lnkModalImg.ForeColor = Drawing.Color.DarkOrange
|
|
lnkModalImg.Font.Bold = True
|
|
lblModalMensaje.Text = "Retardo."
|
|
' CveEstado = CveRetardo
|
|
End If
|
|
|
|
If Instruccion = "C" Then
|
|
lnkModalImg.Text = "<i class='fa fa-exclamation-triangle' aria-hidden='true'></i>"
|
|
lnkModalImg.ToolTip = "Incapacidad"
|
|
lnkModalImg.ForeColor = Drawing.Color.Red
|
|
lblModalMensaje.Font.Bold = True
|
|
End If
|
|
|
|
|
|
DdlAsistenciaInacistencia.SelectedValueExist(CveEstado)
|
|
|
|
UpDetallesDia.Update()
|
|
|
|
End Sub
|
|
|
|
Private Function ObtenerDiaSemana(Fecha As Date) As String
|
|
|
|
Dim DiaInt As Integer = Fecha.DayOfWeek
|
|
|
|
Select Case DiaInt
|
|
Case 0
|
|
Return "Domingo"
|
|
Case 1
|
|
Return "Lunes"
|
|
Case 2
|
|
Return "Martes"
|
|
Case 3
|
|
Return "Miercoles"
|
|
Case 4
|
|
Return "Jueves"
|
|
Case 5
|
|
Return "Viernes"
|
|
Case 6
|
|
Return "Sabado"
|
|
End Select
|
|
|
|
Return ""
|
|
|
|
End Function
|
|
|
|
Private Sub BtnEstusAsistenciaModal_Click(sender As Object, e As EventArgs) Handles BtnEstusAsistenciaModal.Click
|
|
|
|
Dim myRow As DataRow() ' = DtResultados.NewRow
|
|
Dim temtDt As New DataTable
|
|
temtDt = DtResultados.FiltraParametros(FiltroAplicado)
|
|
|
|
Dim fecha As String = temtDt(0)("Fecha").ToString()
|
|
Dim CvePersonal As Integer = temtDt(0)("CvePersonal").ToString().ToEntero
|
|
Dim filtro As String = String.Format(" CvePersonal = '{0}' AND Fecha = '{1}'", CvePersonal, fecha)
|
|
|
|
Dim AplicaFalta As String = GlobalDTAsistenciasInasistencias.FiltraParametros(String.Format(" CveAsistenciasInasistencias = {0} ", DdlAsistenciaInacistencia.SelectedValue))(0)("AplicaFalta").ToString()
|
|
|
|
|
|
myRow = DtResultados.Select(filtro)
|
|
|
|
If AplicaFalta = "Aplica" Then
|
|
myRow(0)("Asistio") = "False"
|
|
myRow(0)("SalarioDiario") = "0"
|
|
Else
|
|
myRow(0)("Asistio") = "True"
|
|
myRow(0)("SalarioDiario") = "100"
|
|
End If
|
|
|
|
myRow(0)("CveAsistenciasInasistencias") = DdlAsistenciaInacistencia.SelectedValue
|
|
|
|
myRow(0)("TipoCorto") = GlobalDTAsistenciasInasistencias.FiltraParametros(String.Format(" CveAsistenciasInasistencias = {0} ", DdlAsistenciaInacistencia.SelectedValue))(0)("TipoCorto").ToString()
|
|
|
|
RegistraScript("$('#divDetallesDia').modal('hide');")
|
|
Alert("Actualizado correctamente.")
|
|
ReprocesarTabla()
|
|
GvBind()
|
|
|
|
End Sub
|
|
|
|
Protected Sub BtnAgregar_Click(sender As Object, e As EventArgs) Handles BtnAgregar.Click
|
|
|
|
Dim objRh As New ClsRH()
|
|
Dim ErrorProceso = False
|
|
|
|
objRh.IniciaTransacSQL()
|
|
|
|
Try
|
|
For Each dRow As DataRow In DtResultados.Rows
|
|
'Dim DDROW As DataRow = dRow
|
|
|
|
Dim _CvePersonal As Integer = dRow("CvePersonal").ToString().ToEntero
|
|
Dim _CveSubProyecto As Integer = dRow("CveSubProyecto").ToString().ToEntero
|
|
Dim _CveTuero As Integer = DdlTurno.SelectedValue.ToEntero
|
|
Dim _Fechas As Date = dRow("Fecha").ToString().ToDate
|
|
Dim _CveAsistenciasInasistencias As Integer = dRow("CveAsistenciasInasistencias").ToString().ToEntero
|
|
Dim _PorcentajePago As Double = Double.Parse(dRow("PorcentajePago").ToString())
|
|
Dim _HorasDobles As Double = 0
|
|
Dim _HorasTriples As Double = 0
|
|
Dim _CveMotivoHoraExtra As Integer = -1
|
|
Dim _Observaciones As String = ""
|
|
Dim _SalarioDiario As Double = dRow("SalarioDiario").ToString().ToDouble
|
|
Dim _Semodifico As Integer = 0
|
|
|
|
If objRh.PreAsistenciaRegistrosAdd(_CvePersonal, _CveSubProyecto, _CveTuero, _Fechas, _CveAsistenciasInasistencias, _PorcentajePago, _HorasDobles, _HorasTriples, _CveMotivoHoraExtra,
|
|
_Observaciones, _SalarioDiario, _Semodifico, UsuarioActual.CveUsuario, UsuarioActual.CveEmpresa) Then
|
|
ErrorProceso = False
|
|
Else
|
|
ErrorProceso = True
|
|
|
|
Exit For
|
|
End If
|
|
Next
|
|
|
|
Catch ex As Exception
|
|
objRh.RollBack()
|
|
OnError("Se presento un error al procesar los registros de asistencia.", ex)
|
|
End Try
|
|
|
|
If ErrorProceso = True Then
|
|
objRh.RollBack()
|
|
Else
|
|
objRh.Commit()
|
|
BtnAgregar.Visible = False
|
|
UpAgregar.Update()
|
|
Alert("Proceso realizado correctamente.")
|
|
End If
|
|
objRh.Dispose()
|
|
|
|
''verificar
|
|
'Dim Pendientes As Boolean = False
|
|
'Dim separador() As Char = {"|"c}
|
|
'Dim TipoCorto = ""
|
|
'Dim TempDatos As New DataTable
|
|
'Dim CveAsisteciaInasistencia As Integer
|
|
'Dim DTChecadorRegistros As New DataTable
|
|
'Dim DTAsistenciasInasistencias As New DataTable
|
|
|
|
'Dim objRH As New ClsRH
|
|
|
|
'If objRH.PreAsistenciaRegistrosGet(FechaInicioPeriodo, FechaFinPeriodo, DdlTurno.SelectedValue.ToEntero, UsuarioActual.Empresa.CveEmpresa) Then
|
|
' DTChecadorRegistros = objRH.DtResultados
|
|
'End If
|
|
|
|
'If objRH.GetPersonalAsistenciaRegistros(FechaInicioPeriodo, FechaFinPeriodo, UsuarioActual.CveEmpresa) Then
|
|
' DTAsistenciasInasistencias = objRH.DtResultados
|
|
'End If
|
|
|
|
'objRH.Dispose()
|
|
|
|
'For Each Drow As DataRow In DtResultados.Rows
|
|
|
|
' For x As Integer = 0 To DtResultados.Columns.Count - 1
|
|
|
|
|
|
' If Drow(x).ToString().Trim = "" Then
|
|
' Exit For
|
|
' End If
|
|
|
|
' Dim arrayData As String() = Drow.ToString().Split(separador)
|
|
|
|
' If arrayData.Length < 2 Then
|
|
' Exit For
|
|
' End If
|
|
|
|
' TipoCorto = arrayData(0).ToString()
|
|
' If TipoCorto = "FR" Then
|
|
' TipoCorto = "F"
|
|
' End If
|
|
|
|
' TempDatos = DTAsistenciasInasistencias.FiltraParametros(String.Format(" TipoCorto = '{0}'", TipoCorto))
|
|
|
|
' If TempDatos.Rows.Count = 1 Then
|
|
' CveAsisteciaInasistencia = DTAsistenciasInasistencias.FiltraParametros(String.Format(" TipoCorto = '{0}' ", TipoCorto))(0)("CveAsistenciasInasistencias").ToString().ToEntero
|
|
' Else
|
|
' CveAsisteciaInasistencia = -1
|
|
' Pendientes = True
|
|
' End If
|
|
' Next
|
|
|
|
|
|
'Next
|
|
|
|
'If Pendientes = False Then
|
|
' For Each Drow As DataRow In DtResultados.Rows
|
|
|
|
' For x As Integer = 0 To DtResultados.Columns.Count - 1
|
|
' If Drow(x).ToString().Trim = "" Then
|
|
' Exit For
|
|
' End If
|
|
|
|
' Dim arrayData As String() = Drow.ToString().Split(separador)
|
|
|
|
' If arrayData.Length < 2 Then
|
|
' Exit For
|
|
' End If
|
|
' TipoCorto = arrayData(0).ToString()
|
|
' Next
|
|
|
|
' Next
|
|
'Else
|
|
' Alert("Existen Fechas pendientes de tratar, revisar las fechas que aparecen con simbolo de advertencia en color amarillo.", TipoMensaje.MsgAdvertencia)
|
|
'End If
|
|
|
|
''procesar
|
|
|
|
End Sub
|
|
|
|
|
|
End Class |