public BEParteDiarioTurno FindTurnoActual(string prm_CodigoPersonaEmpre, string prm_CodigoPuntoVenta) { string sdia = string.Empty; string CodiDia = HelpTime.DiaDeLaSemana(DateTime.Now.AddHours(GlobalSettings.GetDEFAULT_HorasFechaActualCloud()), out sdia).ToString().Trim().PadLeft(3, '0'); BEParteDiarioTurno itemTurno = new BEParteDiarioTurno(); ParteDiarioTurnoLogic oParteDiarioTurnosLogic = new ParteDiarioTurnoLogic(); List <BEParteDiarioTurno> listaParteDiarioTurnos = new List <BEParteDiarioTurno>(); listaParteDiarioTurnos = oParteDiarioTurnosLogic.List(new BaseFiltro { codEmpresaRUC = prm_CodigoPersonaEmpre , codPuntoVenta = prm_CodigoPuntoVenta , codRegTipoTurno = string.Empty , desNombre = string.Empty , codRegDiaSemana = HelpTMaestras.CodigoTabla(HelpTMaestras.TM.DiasDeLaSemana) + CodiDia , indEstado = true }); foreach (BEParteDiarioTurno iPDT in listaParteDiarioTurnos) { double horaActual = HelpTime.CantidadTiempoEn_DECIMAL(DateTime.Now.AddHours(GlobalSettings.GetDEFAULT_HorasFechaActualCloud()).ToShortTimeString()); double horaInicio = HelpTime.CantidadTiempoEn_DECIMAL(iPDT.HoraDeInicio); double horaFinal = HelpTime.CantidadTiempoEn_DECIMAL(iPDT.HoraDeFinal); if (horaActual >= horaInicio && horaActual < horaFinal) { itemTurno = iPDT; break; } else { iPDT.HoraDeInicio = DateTime.Now.ToShortTimeString().Substring(0, 5); itemTurno = iPDT; } } return(itemTurno); }
/// <summary> /// Retorna un LISTA de registros de la Entidad Maestros.Personas /// En la BASE de DATO la Tabla : [Maestros.Personas] /// <summary> /// <returns>List</returns> public List <BETimeEmpleado> ListMarcaciones(int pcodEmpresa, DateTime prm_FechaHoraINI, DateTime prm_FechaHoraFIN, string pUserLogin) { List <BEPersona> miListaPersonas = new List <BEPersona>(); List <BETimeEmpleado> listaTimeEmpleado = new List <BETimeEmpleado>(); CalendariosLogic oCalendariosLogic = new CalendariosLogic(); try { // ITERA la Lista de Empleados foreach (BEPersona itemPersona in prm_miListaPersonas) { List <BEPersonaAtributo> listaPersonasAtributos = new List <BEPersonaAtributo>(); listaPersonasAtributos = oPersonasLogic.ListBy_PersonasAtributos(itemPersona.codEmpresa, itemPersona.CodigoPersona); BETimeEmpleado itemTimeEmpleado = new BETimeEmpleado(); itemTimeEmpleado.CodigoPersona = itemPersona.CodigoPersona; itemTimeEmpleado.Apellidos = itemPersona.itemDatoAdicional.ApellidoPaterno + " " + itemPersona.itemDatoAdicional.ApellidoMaterno; itemTimeEmpleado.Nombres = itemPersona.itemDatoAdicional.Nombre1 + " " + itemPersona.itemDatoAdicional.Nombre2; // Datos y Valores del Empleado para el Control de Asistencia itemPersona.itemDatoAdicional = oPersonasLogic.FindPersonasDatosAdicionales(itemPersona.codEmpresa, itemTimeEmpleado.CodigoPersona, pUserLogin); string CODIGO_CALENDARIO = string.Empty; string TARJETA_MARCACION = string.Empty; //HelpMaestras. // Si Tiene CALENDARIO CODIGO_CALENDARIO = AtributoPersona(listaPersonasAtributos, ConfigurationManager.AppSettings["DEFAULT_CodigoCalendario"].ToString()); TARJETA_MARCACION = AtributoPersona(listaPersonasAtributos, ConfigurationManager.AppSettings["DEFAULT_NroDeTarjeta"].ToString()); if (!string.IsNullOrEmpty(CODIGO_CALENDARIO)) { TARJETA_MARCACION = TARJETA_MARCACION.Trim().PadLeft(Convert.ToInt32(ConfigurationManager.AppSettings["DEFAULT_LongNumCard"]), '0'); itemTimeEmpleado.listaMarcaciones = oMarcacionesLogic.List(TARJETA_MARCACION, prm_FechaHoraINI, prm_FechaHoraFIN); // Lista de TimeMarcaciones Datos completos de la Asistencia del Empleado List <BETimeMarcacion> listaTimeMarcaciones = new List <BETimeMarcacion>(); // Lista de Marcaciones Datos completos del Registro de Marcaciones del RELOJ List <BEMarcacion> listaMarcacionesFECHA_Actual = new List <BEMarcacion>(); // Fecha de INICIO DateTime FECHA_Actual = prm_FechaHoraINI; // CONTAR desde el PRIMER Dia Hasta el ULTIMO Día de UNo en UNO double TOTAL_DE_DIAS = Math.Round(HelpTime.CantidadDias(prm_FechaHoraINI, prm_FechaHoraFIN, HelpTime.TotalTiempo.Dias, true), 0); ++TOTAL_DE_DIAS; for (int i = 1; i <= TOTAL_DE_DIAS; ++i) { // itemTimeMarcaciones para llenar un Registro de Marcación del EMPLEADO BETimeMarcacion itemTimeMarcaciones = new BETimeMarcacion(); string DiaSemanaNOMBRE = string.Empty; // Se Encuentra el Día de la Semana en Número y Nombre int DiaSemanaNUMERO = HelpTime.DiaDeLaSemana(FECHA_Actual, out DiaSemanaNOMBRE); itemTimeMarcaciones.CodigoPersona = itemPersona.CodigoPersona; itemTimeMarcaciones.CodigoPersonaNombre = itemPersona.RazonSocial; foreach (BEPersonaAtributo item in listaPersonasAtributos) { if (item.CodigoArguTipoAtributo == ConfigCROM.AppConfig(pcodEmpresa, ConfigTool.DEFAULT_Atributo_NumerRUC))// - ruc { itemTimeMarcaciones.CodigoPersonaDNI = item.DescripcionAtributo; } } itemTimeMarcaciones.DiaSemana = DiaSemanaNOMBRE.Substring(0, 3); itemTimeMarcaciones.FechaHora = Convert.ToDateTime(FECHA_Actual.ToShortDateString()); string DIA_SEMANA_NOMBRE = string.Empty; int DIA_SEMANA_NUMERO = HelpTime.DiaDeLaSemana(itemTimeMarcaciones.FechaHora, out DIA_SEMANA_NOMBRE); BECalendario itemCalendarios = new BECalendario(); itemCalendarios = oCalendariosLogic.Find(CODIGO_CALENDARIO, true); List <BECalendarioDia> itemCalendariosDias = new List <BECalendarioDia>(); // Encontrar el Horario de Trabajo de la FECHA_Actual del BUCLE var queryCalendariosDIA = from itemDIA in itemCalendarios.listaCalendariosDias //where itemDIA.FechaInicio == itemTimeMarcaciones.FechaHora where itemDIA.CodigoArguDiaSemana == "ADIAS00" + DIA_SEMANA_NUMERO.ToString().Trim() select itemDIA; itemCalendariosDias = queryCalendariosDIA.ToList <BECalendarioDia>(); // Se Obtiene Todas las Marcaciones del EMPLEADO por la Fecha actual del BUCLE var queryMarcasFECHA_Actual = from ListaMarcasFECHA_Actual in itemTimeEmpleado.listaMarcaciones where ListaMarcasFECHA_Actual.FechaTexto.ToShortDateString() == FECHA_Actual.ToShortDateString() select ListaMarcasFECHA_Actual; listaMarcacionesFECHA_Actual = queryMarcasFECHA_Actual.ToList <BEMarcacion>(); int MARCAS_CANTIDAD = listaMarcacionesFECHA_Actual.Count; int MARCAS_CONTADOR = 0; int MARCAS_VECES = 0; itemTimeMarcaciones.HorarioEntrada = itemCalendariosDias[0].itemHorario.HEntrada == "00:00" ? "__:__" : itemCalendariosDias[0].itemHorario.HEntrada; itemTimeMarcaciones.HorasTeoricasTIME60 = HelpTime.CantidadTiempoEn_HH_MM(Convert.ToDouble(itemCalendariosDias[0].itemHorario.HorasLabor)); itemTimeMarcaciones.HorasTeoricasDOUBLE = Convert.ToDouble(itemCalendariosDias[0].itemHorario.HorasLabor); // SI TIENE MAS de una MARCACIÓN if (MARCAS_CANTIDAD > 0) { // Colocar las Marcaciones existentes en el registro Horizontal de itemTimeMarcaciones MarcacionesDeVerticalaHorizontal(listaMarcacionesFECHA_Actual, itemTimeMarcaciones, ref MARCAS_CONTADOR, ref MARCAS_VECES); CalcularTiempoPersona(itemTimeMarcaciones, itemCalendariosDias[0].itemHorario, MARCAS_VECES); itemTimeEmpleado.listaTimeMarcaciones.Add(itemTimeMarcaciones); } else { itemTimeMarcaciones.Entra01 = string.Empty; itemTimeMarcaciones.Entra02 = string.Empty; itemTimeMarcaciones.Salid01 = string.Empty; itemTimeMarcaciones.Salid02 = string.Empty; string decripcion = null; if (DetectaAGENDA(itemTimeEmpleado.CodigoPersona, FECHA_Actual, FECHA_Actual.Year, ref decripcion)) { itemTimeMarcaciones.MarcacionesDescripcion = decripcion; } else if (DetectaFERIADO(itemCalendariosDias[0].itemHorario, FECHA_Actual, ref decripcion)) { itemTimeMarcaciones.MarcacionesDescripcion = decripcion; } else { itemTimeMarcaciones.CONTADOR_VecesFalta = 1; itemTimeMarcaciones.MarcacionesDescripcion = decripcion; } itemTimeEmpleado.listaTimeMarcaciones.Add(itemTimeMarcaciones); } // La variable FECHA_Actual es Igual al Acumulado de prm_FechaHoraINI en UNO (Contador=i) FECHA_Actual = prm_FechaHoraINI.AddDays(i); } listaTimeEmpleado.Add(itemTimeEmpleado); } } } catch (Exception ex) { var returnValor = HelpException.mTraerMensaje(ex, false, this.GetType().Name + '.' + MethodBase.GetCurrentMethod().Name, pUserLogin, pcodEmpresa.ToString()); throw new Exception(returnValor.Message); } return(listaTimeEmpleado); }