Option Strict On Imports Extensiones Imports System.Data Partial Class RH_RepChecadorPreAsistencia Inherits ClsPaginas 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 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.FiltraParametros("CveEmpresa = " & 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")) 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("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 = "" If DdlSubProyecto.SelectedIndex > 0 Then FiltroSubProyecto = $" CveTipoPeriodo = {DdlTipoPeriodo.SelectedValue } AND CveEstado = 1 AND CveTurno = { DdlTurno.SelectedValue} AND CveSubProyecto = { DdlSubProyecto.SelectedValue.ToEntero }" Else FiltroSubProyecto = $" CveTipoPeriodo = {DdlTipoPeriodo.SelectedValue } AND CveEstado = 1 AND CveTurno = { DdlTurno.SelectedValue} " 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.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("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("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("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("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("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("
{1}
{0}
", 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") 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 AND CveTurno = " & DdlTurno.SelectedValue) dt.Columns.Add("CvePersonal") dt.Columns.Add("NombreCompleto") 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("
{1}
{0}
", 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") 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 diaSemana As Integer = Fecha.DayOfWeek Select Case diaSemana Case 0 Drow(0) = Boolean.Parse(DTHorarioPersonal(0)("Domingo").ToString) Drow(1) = TimeSpan.Parse(DTHorarioPersonal(0)("DomingoEntrada").ToString) Drow(2) = TimeSpan.Parse(DTHorarioPersonal(0)("DomingoSalidaComida").ToString) Drow(3) = TimeSpan.Parse(DTHorarioPersonal(0)("DomingoEntradaComida").ToString) Drow(4) = TimeSpan.Parse(DTHorarioPersonal(0)("DomingoSalida").ToString) Exit Select Case 1 Drow(0) = Boolean.Parse(DTHorarioPersonal(0)("Lunes").ToString) Drow(1) = TimeSpan.Parse(DTHorarioPersonal(0)("LunesEntrada").ToString) Drow(2) = TimeSpan.Parse(DTHorarioPersonal(0)("LunesSalidaComida").ToString) Drow(3) = TimeSpan.Parse(DTHorarioPersonal(0)("LunesEntradaComida").ToString) Drow(4) = TimeSpan.Parse(DTHorarioPersonal(0)("LunesSalida").ToString) Exit Select Case 2 Drow(0) = Boolean.Parse(DTHorarioPersonal(0)("Martes").ToString) Drow(1) = TimeSpan.Parse(DTHorarioPersonal(0)("MartesEntrada").ToString) Drow(2) = TimeSpan.Parse(DTHorarioPersonal(0)("MartesSalidaComida").ToString) Drow(3) = TimeSpan.Parse(DTHorarioPersonal(0)("MartesEntradaComida").ToString) Drow(4) = TimeSpan.Parse(DTHorarioPersonal(0)("MartesSalida").ToString) Exit Select Case 3 Drow(0) = Boolean.Parse(DTHorarioPersonal(0)("Miercoles").ToString) Drow(1) = TimeSpan.Parse(DTHorarioPersonal(0)("MiercolesEntrada").ToString) Drow(2) = TimeSpan.Parse(DTHorarioPersonal(0)("MiercolesSalidaComida").ToString) Drow(3) = TimeSpan.Parse(DTHorarioPersonal(0)("MiercolesEntradaComida").ToString) Drow(4) = TimeSpan.Parse(DTHorarioPersonal(0)("MiercolesSalida").ToString) Exit Select Case 4 Drow(0) = Boolean.Parse(DTHorarioPersonal(0)("Jueves").ToString) Drow(1) = TimeSpan.Parse(DTHorarioPersonal(0)("JuevesEntrada").ToString) Drow(2) = TimeSpan.Parse(DTHorarioPersonal(0)("JuevesSalidaComida").ToString) Drow(3) = TimeSpan.Parse(DTHorarioPersonal(0)("JuevesEntradaComida").ToString) Drow(4) = TimeSpan.Parse(DTHorarioPersonal(0)("JuevesSalida").ToString) Exit Select Case 5 Drow(0) = Boolean.Parse(DTHorarioPersonal(0)("Viernes").ToString) Drow(1) = TimeSpan.Parse(DTHorarioPersonal(0)("ViernesEntrada").ToString) Drow(2) = TimeSpan.Parse(DTHorarioPersonal(0)("ViernesSalidaComida").ToString) Drow(3) = TimeSpan.Parse(DTHorarioPersonal(0)("ViernesEntradaComida").ToString) Drow(4) = TimeSpan.Parse(DTHorarioPersonal(0)("ViernesSalida").ToString) Exit Select Case 6 Drow(0) = Boolean.Parse(DTHorarioPersonal(0)("Sabado").ToString) Drow(1) = TimeSpan.Parse(DTHorarioPersonal(0)("SabadoEntrada").ToString) Drow(2) = TimeSpan.Parse(DTHorarioPersonal(0)("SabadoSalidaComida").ToString) Drow(3) = TimeSpan.Parse(DTHorarioPersonal(0)("SabadoEntradaComida").ToString) Drow(4) = TimeSpan.Parse(DTHorarioPersonal(0)("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 = "" lnkLink.ForeColor = Drawing.Color.Green lnkLink.ToolTip = "Asistencia" lnkLink.Font.Bold = True End If If Instruccion = "A" Then lnkLink.Text = "" lnkLink.ForeColor = Drawing.Color.Green lnkLink.ToolTip = "Asistencia" lnkLink.Font.Bold = True End If If Instruccion = "F" Then lnkLink.Text = "" lnkLink.ToolTip = "Falta" lnkLink.ForeColor = Drawing.Color.Red ContadorFaltas = ContadorFaltas + 1 End If If Instruccion = "FR" Then lnkLink.Text = "" lnkLink.ToolTip = "Falta por (Retardo)" lnkLink.ForeColor = Drawing.Color.Red ContadorFaltas = ContadorFaltas + 1 End If If Instruccion = "D" Or Instruccion = "V" Then lnkLink.Text = "" 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 = "" lnkLink.ToolTip = "Dia de descanso/no laboral/Vacación" lnkLink.ForeColor = Drawing.Color.DarkOrange End If If Instruccion = "IN" Then lnkLink.Text = "" lnkLink.ToolTip = "Inconsistencia" lnkLink.ForeColor = Drawing.Color.DarkOrange lnkLink.Font.Bold = True End If If Instruccion = "IND" Then lnkLink.Text = "" 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 = "" lnkLink.ToolTip = "Retardo" lnkLink.ForeColor = Drawing.Color.DarkOrange lnkLink.Font.Bold = True End If If Instruccion = "D" Then lnkLink.Text = "" lnkLink.ToolTip = "Dia de descanso/no laboral" lnkLink.ForeColor = Drawing.Color.Green End If If Instruccion = "V" Then lnkLink.Text = "" lnkLink.ToolTip = "Dia de descanso/no laboral" lnkLink.ForeColor = Drawing.Color.Green End If If Instruccion = "I" Then lnkLink.Text = "" lnkLink.ToolTip = "Incapacidad" lnkLink.ForeColor = Drawing.Color.Green lnkLink.Font.Bold = True End If If Instruccion = "M" Then lnkLink.Text = "" lnkLink.ToolTip = "Medico" lnkLink.ForeColor = Drawing.Color.Green lnkLink.Font.Bold = True End If If Instruccion = "C" Then lnkLink.Text = "" lnkLink.ToolTip = "Castigo." lnkLink.ForeColor = Drawing.Color.Red lnkLink.Font.Bold = True End If If Instruccion = "S" Then lnkLink.Text = "" 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 = "" 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 = "" lnkModalImg.ToolTip = "Falta" lnkModalImg.ForeColor = Drawing.Color.Red lblModalMensaje.Text = "Falta" ' CveEstado = CveFalto End If If Instruccion = "FR" Then lnkModalImg.Text = "" 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 = "" 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 = "" 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 = "" lnkModalImg.ToolTip = "Inconsistencia" lnkModalImg.ForeColor = Drawing.Color.DarkOrange lnkModalImg.Font.Bold = True lblModalMensaje.Text = "Inconsistencia." End If If Instruccion = "I" Then lnkModalImg.Text = "" lnkModalImg.ToolTip = "Incapacidad" lnkModalImg.ForeColor = Drawing.Color.Green lnkModalImg.Font.Bold = True lblModalMensaje.Text = "Incapacidad." End If If Instruccion = "V" Then lnkModalImg.Text = "" 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 = "" 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 = "" 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 = "" 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