Exemple #1
0
        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);
        }
Exemple #2
0
        /// <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);
        }