예제 #1
0
        /// <summary>
        /// Retorna una ENTIDAD de registro de la Entidad Asistencia.Calendarios
        /// En la BASE de DATO la Tabla : [Asistencia.Calendarios]
        /// <summary>
        /// <returns>Entidad</returns>
        public BECalendario Find(string prm_CodigoCalendario)
        {
            BECalendario miEntidad = new BECalendario();

            try
            {
                using (_CROMTimeDataContext SQLDC = new _CROMTimeDataContext(conexion))
                {
                    var resul = SQLDC.omgc_mnt_GetByIdCodeCalendarios(prm_CodigoCalendario);
                    foreach (var item in resul)
                    {
                        miEntidad = new BECalendario()
                        {
                            CodigoCalendario  = item.CodigoCalendario,
                            Descripcion       = item.Descripcion,
                            Anio              = item.Anio,
                            Estado            = item.Estado,
                            SegUsuarioCrea    = item.SegUsuarioCrea,
                            SegUsuarioEdita   = item.SegUsuarioEdita,
                            SegFechaHoraCrea  = item.SegFechaHoraCrea,
                            SegFechaHoraEdita = item.SegFechaHoraEdita,
                            SegMaquinaOrigen  = item.SegMaquinaOrigen,
                        };
                    }
                }
            }
            catch (Exception ex)
            {
                throw ex;
            }
            return(miEntidad);
        }
예제 #2
0
 /// <summary>
 /// Almacena el registro de una ENTIDAD de registro de Tipo Calendarios
 /// En la BASE de DATO la Tabla : [Asistencia.Calendarios]
 /// <summary>
 /// <param name = >itemCalendarios</param>
 public ReturnValor Insert(BECalendario itemCalendarios)
 {
     try
     {
         using (TransactionScope tx = new TransactionScope(TransactionScopeOption.Required))
         {
             oReturnValor.Exitosa = oCalendariosData.Insert(itemCalendarios);
             foreach (BECalendarioDia itemCalendariosDias in itemCalendarios.listaCalendariosDias)
             {
                 oReturnValor.CodigoRetorno = oCalendariosDiasData.Insert(itemCalendariosDias);
             }
             if (oReturnValor.Exitosa && oReturnValor.CodigoRetorno != null)
             {
                 oReturnValor.Message = HelpEventos.MessageEvento(HelpEventos.Process.NEW);
                 tx.Complete();
             }
             else
             {
                 oReturnValor.Exitosa = false;
             }
         }
     }
     catch (Exception ex)
     {
         oReturnValor = HelpException.mTraerMensaje(ex);
     }
     return(oReturnValor);
 }
예제 #3
0
 /// <summary>
 /// Almacena el registro de una ENTIDAD de registro de Tipo Calendarios
 /// En la BASE de DATO la Tabla : [Asistencia.Calendarios]
 /// <summary>
 /// <param name = >itemCalendarios</param>
 public ReturnValor Update(BECalendario itemCalendarios)
 {
     try
     {
         using (TransactionScope tx = new TransactionScope(TransactionScopeOption.Required))
         {
             oReturnValor.Exitosa = oCalendariosData.Update(itemCalendarios);
             foreach (BECalendarioDia itemCalendariosDias in itemCalendarios.listaCalendariosDias)
             {
                 itemCalendariosDias.CodigoCalendario = itemCalendarios.CodigoCalendario;
                 itemCalendariosDias.SegUsuarioCrea   = itemCalendarios.SegUsuarioCrea;
                 itemCalendariosDias.SegUsuarioEdita  = itemCalendarios.SegUsuarioEdita;
                 if (itemCalendariosDias.Registro == null)
                 {
                     oReturnValor.CodigoRetorno = oCalendariosDiasData.Insert(itemCalendariosDias);
                 }
                 else
                 {
                     oReturnValor.Exitosa = oCalendariosDiasData.Update(itemCalendariosDias);
                 }
             }
             if (oReturnValor.Exitosa)
             {
                 oReturnValor.Message = HelpEventos.MessageEvento(HelpEventos.Process.EDIT);
                 tx.Complete();
             }
         }
     }
     catch (Exception ex)
     {
         oReturnValor = HelpException.mTraerMensaje(ex);
     }
     return(oReturnValor);
 }
예제 #4
0
        /// <summary>
        /// Retorna una ENTIDAD de registro de la Entidad Asistencia.Calendarios
        /// En la BASE de DATO la Tabla : [Asistencia.Calendarios]
        /// <summary>
        /// <returns>Entidad</returns>
        public BECalendario Find(string prm_CodigoCalendario, bool prm_Estado)
        {
            BECalendario miEntidad = new BECalendario();

            try
            {
                miEntidad = oCalendariosData.Find(prm_CodigoCalendario);
                miEntidad.listaCalendariosDias = oCalendariosDiasData.List(prm_CodigoCalendario, string.Empty, string.Empty, prm_Estado, HelpTMaestras.CodigoTabla(HelpTMaestras.TM.DiasDeLaSemana));
                foreach (BECalendarioDia itemCalendariosDias in miEntidad.listaCalendariosDias)
                {
                    itemCalendariosDias.itemHorario = oHorarioData.Find(itemCalendariosDias.CodigoHorario);
                }
            }
            catch (Exception ex)
            {
                throw ex;
            }
            return(miEntidad);
        }
예제 #5
0
        /// <summary>
        /// Almacena el registro de una ENTIDAD de registro de Tipo Calendarios
        /// En la BASE de DATO la Tabla : [Asistencia.Calendarios]
        /// <summary>
        /// <param name = >itemCalendarios</param>
        public bool Update(BECalendario itemCalendarios)
        {
            int codigoRetorno = -1;

            try
            {
                using (_CROMTimeDataContext SQLDC = new _CROMTimeDataContext(conexion))
                {
                    codigoRetorno = SQLDC.omgc_mnt_UpdateCalendarios(
                        itemCalendarios.CodigoCalendario,
                        itemCalendarios.Descripcion,
                        itemCalendarios.Anio,
                        itemCalendarios.Estado,
                        itemCalendarios.SegUsuarioEdita);
                }
            }
            catch (Exception ex)
            {
                throw ex;
            }
            return(codigoRetorno == 0 ? true : false);
        }
예제 #6
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);
        }