Esempio n. 1
0
        private void Hojas_BT_Click(object sender, EventArgs e)
        {
            PrintSource seleccion = PrintSource.All;
            bool        alumno    = false;

            PartesPrintSelectForm form   = new PartesPrintSelectForm(seleccion);
            DialogResult          result = form.ShowDialog();

            if (result != DialogResult.Cancel)
            {
                if (form.Source == PrintSource.Selection)
                {
                    alumno = true;
                }
            }

            CronogramaReportMng reportMng = new CronogramaReportMng(AppContext.ActiveSchema);

            AlumnoList lista = AlumnoList.GetListByPromocion(_entity.OidPromocion, false);

            foreach (ParteAsistenciaInfo item in _entity.Asistencias)
            {
                AlumnoList alumnos = null;
                SesionInfo sesion  = null;

                foreach (SesionInfo ses in _entity.Sesions)
                {
                    if (ses.Fecha.ToShortDateString() == item.Fecha.ToShortDateString() &&
                        ses.Hora.ToShortTimeString() == DateTime.Parse(item.HoraInicio).ToShortTimeString())
                    {
                        sesion = ses;
                        break;
                    }
                }

                alumnos = AlumnoList.CreateAlumnosList(lista, item.Alumno_Partes);

                if (item.Sesiones != string.Empty && alumnos.Count > 0)
                {
                    if (item.Tipo == 2 || sesion.OidClasePractica > 0)
                    {
                        ReportViewer.SetReport(reportMng.GetDetailPracticasReport(sesion, alumnos, item.NHoras,
                                                                                  _teoricas, /*ClasePracticaList.Merge(_practicas[1], _practicas[2])*/
                                                                                  ClasePracticaList.GetClasesPlanList(_entity.OidPlan), _extras, item.Texto, _entity.OidPromocion, alumno));
                    }
                    else
                    {
                        ReportViewer.SetReport(reportMng.GetDetailTeoricasReport(sesion, alumnos, item.NHoras,
                                                                                 _teoricas, ClasePracticaList.Merge(_practicas[1], _practicas[2]), _extras, item.Texto, _entity.OidPromocion, alumno));
                    }
                }

                ReportViewer.ShowDialog();
            }
        }
Esempio n. 2
0
        protected override void  EditarAlumnoAction()
        {
            try
            {
                Alumno item = Alumno.GetForForm((Alumnos_Grid.CurrentRow.DataBoundItem as AlumnoInfo).Oid, true, _entity.SessionCode);
                item.SharedTransaction = true;
                AlumnoEditForm form = new AlumnoEditForm(item, true, this);
                form.ShowDialog();

                if (form.ActionResult == DialogResult.OK)
                {
                    //_entity.LoadChilds(typeof(Alumno_Promocion));
                    Datos_Alumnos.DataSource = Datos_Alumnos.DataSource = AlumnoList.GetListByPromocion(EntityInfo.Oid, false);
                }
            }
            catch { }
        }
Esempio n. 3
0
        protected AlumnoList GetAlumnoList(AlumnoInfo alumno, PromocionInfo promocion)
        {
            List <AlumnoInfo> alumnos = new List <AlumnoInfo>();
            AlumnoList        list;

            if (alumno != null)
            {
                alumnos.Add(alumno);
                list = AlumnoList.GetList(alumnos);
            }
            else
            {
                if (promocion != null)
                {
                    list = AlumnoList.GetListByPromocion(promocion.Oid, false);
                }
                else
                {
                    list = AlumnoList.GetList(false);
                }
            }

            return(list);
        }
        protected override bool CrearPartes()
        {
            int  count      = 0;
            long oid_modulo = 0;
            int  index      = 0;
            long tipo       = 0;

            PgMng.Reset(6, 1, Resources.Messages.CREANDO_PARTES_ASISTENCIA, this);

            try
            {
                PromocionInfo promo   = PromocionInfo.Get(_entity.OidPromocion, true);
                AlumnoList    alumnos = AlumnoList.GetListByPromocion(promo.Oid, true);

                if (promo.Sesiones.Count == 0)
                {
                    Promocion promocion = Promocion.Get(_entity.OidPromocion, false);
                    promocion.LoadChilds(typeof(Sesion_Promocion));
                    List <List <long> > duracion_sesiones = _entity.RellenaHorasSemana();
                    foreach (List <long> lista in duracion_sesiones)
                    {
                        foreach (long item in lista)
                        {
                            Sesion_Promocion ses = Sesion_Promocion.NewChild(promocion);
                            ses.NHoras = duracion_sesiones.IndexOf(lista) + 1;
                            if (item > 69)
                            {
                                ses.Sabado = true;
                            }
                            ses.HoraInicio = DateTime.Parse((item % 14 + 10).ToString("00") + ":00");
                            promocion.Sesiones.Add(ses);
                        }
                    }
                    promo = promocion.GetInfo(true);
                    promocion.CloseSession();
                }
                PgMng.Grow();

                if (!_entity.IsDirty)
                {
                    return(true);
                }

                //guarda la lista de partes de asistencia anterior
                ParteAsistencias partes = _entity.Asistencias.Clone();

                PgMng.Grow();

                ParteAsistencias nueva       = ParteAsistencias.NewChildList();
                HorarioInfo      horario_old = HorarioInfo.Get(_entity.Oid, true);

                //genera la nueva lista de partes de asistencia
                for (int sesion_ind = 0; sesion_ind < _entity.Sesions.Count; sesion_ind++)
                {
                    Sesion item = _entity.Sesions[sesion_ind];

                    bool confirmada = false;

                    if (item.OidClasePractica != 0)
                    {
                        bool incluida = false;

                        foreach (ParteAsistencia parte_practicas in nueva)
                        {
                            if (parte_practicas.Tipo == 2)
                            {
                                ClasePracticaInfo p_info = _practicas[(int)item.Grupo].GetItem(item.OidClasePractica);
                                if (p_info != null &&
                                    (parte_practicas.Texto.Trim() == p_info.Alias.Trim() + "G" + item.Grupo.ToString() ||
                                     parte_practicas.Texto.Trim() == p_info.Alias.Trim()))
                                {
                                    incluida = true;
                                    break;
                                }
                            }
                        }

                        if (incluida)
                        {
                            continue;
                        }
                    }

                    //Se busca un parte de asistencias confirmado que contenga esta clase
                    foreach (ParteAsistencia parte_old in partes)
                    {
                        DateTime hora_sesion = DateTime.Parse(parte_old.HoraInicio);

                        if (parte_old.Fecha.Date == item.Fecha.Date &&
                            hora_sesion.Hour == item.Hora.Hour &&
                            parte_old.Confirmada)
                        {
                            int n_horas = DateTime.Parse(parte_old.NHoras).Hour;

                            for (int horas_ind = 0; horas_ind < n_horas; horas_ind++)
                            {
                                if (!_entity.Sesions[sesion_ind + horas_ind].IsEqual(horario_old.Sesions[sesion_ind + horas_ind]))
                                {
                                    return(false);
                                }
                            }

                            //se trata de una teórica o una extra y no hay que comprobar que en ese intervalo exista otra sesión
                            if (item.OidClasePractica == 0)
                            {
                                sesion_ind += n_horas - 1;
                            }

                            nueva.Add(parte_old);
                            confirmada = true;
                            break;
                        }
                    }

                    if (confirmada)
                    {
                        continue;
                    }

                    //Desmarca las clases que han sido marcadas como impartidas pero que tienen
                    //fecha y horas mayor que la actual
                    if (item.Fecha.Date > DateTime.Today.Date &&
                        item.Estado == 3)
                    {
                        item.Estado = 2;
                    }

                    //si ya hay un parte para esta práctica no se vuelve a crear
                    if (item.OidClasePractica > 0)
                    {
                        bool esta = false;
                        foreach (ParteAsistencia p in nueva)
                        {
                            foreach (Clase_Parte cp in p.Clases)
                            {
                                if (cp.Tipo == 2 &&
                                    cp.OidClase == item.OidClasePractica &&
                                    (cp.Grupo == 3 || cp.Grupo == item.Grupo))
                                {
                                    esta = true;
                                    break;
                                }
                            }
                        }
                        if (esta)
                        {
                            continue;
                        }
                    }

                    if ((item.OidClaseTeorica > 0 ||
                         item.OidClasePractica > 0 ||
                         item.OidClaseExtra > 0) &&
                        !item.IsDeleted)
                    {
                        string aux             = string.Empty;
                        long   oid_modulo_item = 0;
                        string sesion          = string.Empty;
                        long   oid_clase       = 0;
                        long   grupo           = 3;

                        if (item.OidClasePractica != 0)
                        {
                            ClasePracticaInfo clase = null;

                            clase           = _practicas[(int)item.Grupo].GetItem(item.OidClasePractica);
                            oid_modulo_item = clase.OidModulo;
                            aux             = clase.Alias + " G" + item.Grupo.ToString();
                            sesion          = clase.Oid.ToString();
                            tipo            = 2;
                            grupo           = clase.Grupo;
                            oid_clase       = clase.Oid;
                        }
                        if (item.OidClaseTeorica != 0)
                        {
                            ClaseTeoricaInfo clase = _teoricas.GetItem(item.OidClaseTeorica);
                            oid_modulo_item = clase.OidModulo;
                            aux             = clase.Alias;
                            sesion          = clase.Oid.ToString();
                            tipo            = 1;
                            oid_clase       = clase.Oid;
                        }
                        if (item.OidClaseExtra != 0)
                        {
                            ClaseExtraInfo clase = _extras.GetItem(item.OidClaseExtra);
                            oid_modulo_item = clase.OidModulo;
                            aux             = clase.Alias;
                            sesion          = clase.Oid.ToString();
                            tipo            = 3;
                            oid_clase       = clase.Oid;
                        }

                        if (oid_modulo_item != 0)
                        {
                            if (item.OidClasePractica == 0)
                            {
                                foreach (Sesion_PromocionInfo ses in promo.Sesiones)
                                {
                                    if (ses.HoraInicio.TimeOfDay == item.Hora.TimeOfDay)
                                    {
                                        count = 0;
                                        break;
                                    }
                                }
                            }

                            if (count == 0)
                            {
                                ParteAsistencia parte = ParteAsistencia.NewChild(_entity);
                                parte.Tipo                  = tipo;
                                parte.Texto                 = aux + " ";
                                parte.Sesiones              = sesion + " ";
                                parte.Fecha                 = item.Fecha;
                                parte.HoraInicio            = item.Hora.ToString("HH:mm");
                                parte.OidInstructor         = item.OidProfesor;
                                parte.OidInstructorEfectivo = item.OidProfesor;
                                parte.CreateAlumnosList(alumnos, item.Grupo);
                                if (index == _entity.Sesions.Count - 1)
                                {
                                    parte.NHoras = count.ToString() + ":00";
                                }
                                parte.MarkItemChild();
                                nueva.AddItem(parte);
                                oid_modulo = oid_modulo_item;
                                count++;
                                if (tipo == 2)
                                {
                                    nueva[nueva.Count - 1].NHoras = "5:00";
                                    nueva[nueva.Count - 1].CreatePartePracticas(item.OidClasePractica);
                                }
                                else
                                {
                                    nueva[nueva.Count - 1].NHoras = count.ToString() + ":00";
                                }
                            }
                            else
                            {
                                ParteAsistencia ultima = nueva[nueva.Count - 1];

                                if (ultima.OidHorario == item.OidHorario &&
                                    ultima.Fecha.Date.Equals(item.Fecha.Date) &&
                                    Convert.ToDateTime(ultima.HoraInicio).AddHours(count).Hour.Equals(item.Hora.Hour) &&
                                    ultima.OidInstructor == item.OidProfesor &&
                                    oid_modulo_item == oid_modulo &&
                                    ((ultima.Tipo == 1 && item.OidClaseTeorica > 0) ||
                                     (ultima.Tipo == 2 && item.OidClasePractica > 0) ||
                                     (ultima.Tipo == 3 && item.OidClaseExtra > 0)))
                                {
                                    count++;
                                    sesion += " ";
                                    if ((item.OidClasePractica > 0 && nueva[nueva.Count - 1].Sesiones != sesion) ||
                                        item.OidClasePractica == 0)
                                    {
                                        nueva[nueva.Count - 1].Texto    += aux + " ";
                                        nueva[nueva.Count - 1].Sesiones += sesion;
                                        nueva[nueva.Count - 1].NHoras    = count.ToString() + ":00";
                                        if (index == _entity.Sesions.Count - 1)
                                        {
                                            count = 0;
                                        }
                                    }
                                    else
                                    {
                                        ClasePracticaInfo clase = null;
                                        clase = _practicas[(int)item.Grupo].GetItem(item.OidClasePractica);
                                        string texto_aux = clase.Alias + " G" + item.Grupo.ToString() + " ";
                                        if (nueva[nueva.Count - 1].Texto != texto_aux)
                                        {
                                            nueva[nueva.Count - 1].Texto = clase.Alias;

                                            nueva[nueva.Count - 1].CreateAlumnosList(alumnos, 3);
                                            nueva[nueva.Count - 1].CreatePartePracticas(item.OidClasePractica);
                                        }
                                    }
                                }
                                else
                                {
                                    ParteAsistencia parte = ParteAsistencia.NewChild(_entity);
                                    parte.Tipo                  = tipo;
                                    parte.Texto                 = aux + " ";
                                    parte.Sesiones              = sesion + " ";
                                    parte.Fecha                 = item.Fecha;
                                    parte.HoraInicio            = item.Hora.ToString("HH:mm");
                                    parte.OidInstructor         = item.OidProfesor;
                                    parte.OidInstructorEfectivo = item.OidProfesor;
                                    parte.CreateAlumnosList(alumnos, item.Grupo);
                                    if (index == _entity.Sesions.Count - 1)
                                    {
                                        parte.NHoras = count.ToString() + ":00";
                                    }
                                    parte.MarkItemChild();
                                    nueva.AddItem(parte);
                                    oid_modulo = oid_modulo_item;
                                    count      = 1;
                                    if (tipo == 2)
                                    {
                                        nueva[nueva.Count - 1].NHoras = "5:00";
                                        nueva[nueva.Count - 1].CreatePartePracticas(item.OidClasePractica);
                                    }
                                    else
                                    {
                                        nueva[nueva.Count - 1].NHoras = count.ToString() + ":00";
                                    }
                                }
                            }
                            Clase_Parte registro = nueva[nueva.Count - 1].Clases.NewItem(nueva[nueva.Count - 1]);
                            registro.OidClase = oid_clase;
                            registro.Tipo     = tipo;
                            registro.Grupo    = grupo;
                        }
                    }
                    index++;
                }
                PgMng.Grow();

                foreach (ParteAsistencia parte_old in partes)
                {
                    bool esta = false;
                    for (int i = 0; i < nueva.Count; i++)
                    {
                        ParteAsistencia parte_new = nueva[i];
                        if (parte_old.Fecha.Date == parte_new.Fecha.Date &&
                            parte_old.HoraInicio == parte_new.HoraInicio &&
                            parte_old.NHoras == parte_new.NHoras &&
                            parte_old.OidInstructor == parte_new.OidInstructor &&
                            parte_old.Tipo == parte_new.Tipo)
                        {
                            esta = true;
                            foreach (Clase_Parte cp_old in parte_old.Clases)
                            {
                                bool esta_clase = false;
                                foreach (Clase_Parte cp_new in parte_new.Clases)
                                {
                                    if (cp_old.OidClase == cp_new.OidClase &&
                                        cp_old.Tipo == cp_new.Tipo &&
                                        cp_old.Grupo == cp_new.Grupo)
                                    {
                                        esta_clase = true;
                                        break;
                                    }
                                }
                                if (!esta_clase)
                                {
                                    if (parte_old.Confirmada)
                                    {
                                        throw new iQException(Resources.Messages.PARTE_CON_CONCEPTOS_ASOCIADOS);
                                    }
                                    else
                                    {
                                        esta = false;
                                        break;
                                    }
                                }
                            }
                        }
                        if (esta)
                        {
                            nueva.Remove(parte_new);
                            break;
                        }
                    }
                    if (!esta)
                    {
                        if (parte_old.Confirmada)
                        {
                            throw new iQException(Resources.Messages.PARTE_CON_CONCEPTOS_ASOCIADOS);
                        }
                        else
                        {
                            _entity.Asistencias.Remove(parte_old);
                        }
                    }
                }

                /*ParteAsistencias partes_bu = _entity.Asistencias.Clone();
                 * //_entity.Asistencias = ParteAsistencias.NewChildList();
                 * //se unen las dos listas
                 * //partes es la lista de partes de asistencia que existía antes de modificar el horario
                 * //nueva tiene los partes que se generan a partir del horario modificado
                 * //Se busca cada parte antiguo en la lista de partes nueva
                 * foreach (ParteAsistencia item in partes)
                 * {
                 *  ParteAsistencia existe = nueva.Contiene(item);
                 *
                 *  if (existe != null)
                 *  {
                 *      //Si se trata de una clase práctica
                 *      if (existe.Tipo == 2 && !existe.Confirmada)
                 *      {
                 *          //Si en el parte antiguo la clase práctica no tenía lista de notas de prácticas de alumnos o estaba vacía
                 *          //se le crea la lista de notas de prácticas de alumnos
                 *          if (item.Alumnos_Practicas == null || item.Alumnos_Practicas.Count == 0)
                 *          {
                 *              if (existe.Alumnos_Practicas.Count > 0)
                 *                  item.CreatePartePracticas(existe.Alumnos_Practicas[0].OidClasePractica);
                 *              else
                 *                  item.Alumnos_Practicas = existe.Alumnos_Practicas.Clone();
                 *          }
                 *          else
                 *          {
                 *              //si ya tenía lista de notas de prácticas se actualiza
                 *              foreach (Alumno_Practica alumno_practica in item.Alumnos_Practicas)
                 *              {
                 *                  if (alumno_practica.Falta)
                 *                      alumno_practica.Calificacion = Resources.Labels.NO_APTO_LABEL;
                 *              }
                 *          }
                 *      }
                 *
                 *      _entity.Asistencias.AddItem(item, false);
                 *
                 *      //Método rancio para eliminar el parte que ya existía en la lista original de la lista de partes nuevos
                 *      int ind = -1;
                 *      for (int i = 0; i < nueva.Count; i++)
                 *      {
                 *          ParteAsistencia obj = nueva[i];
                 *
                 *          if (item.OidInstructor == obj.OidInstructor
                 *          && item.Sesiones == obj.Sesiones
                 *          && item.NHoras == obj.NHoras
                 *          && item.Fecha.ToShortDateString() == obj.Fecha.ToShortDateString()
                 *          && item.HoraInicio == obj.HoraInicio)
                 *          {
                 *              ind = i;
                 *              break;
                 *          }
                 *      }
                 *      if (ind != -1)
                 *      {
                 *          ParteAsistencias aux = nueva.Clone();
                 *          nueva = ParteAsistencias.NewChildList();
                 *          for (int i = 0; i < aux.Count; i++)
                 *          {
                 *              if (i != ind)
                 *                  nueva.AddItem(aux[i]);
                 *          }
                 *      }
                 *  }
                 *  else
                 *  {
                 *      if (!item.Confirmada)
                 *      {
                 *          //Si no se ha encontrado el parte antiguo, se genera el albarán correspondiente y se elimina el parte antiguo
                 *          if (item.Conceptos != null && item.Conceptos.Count > 0)
                 *          {
                 *              InputDeliveryLineInfo concepto = InputDeliveryLineInfo.Get(item.Conceptos[0].OidConcepto);
                 *              InputDeliveryInfo albaran = albaranes.GetItem(concepto.OidAlbaran);
                 *              if (albaran != null && albaran.Facturado)
                 *              {
                 *                  _entity.Asistencias = partes_bu;
                 *                  return false;
                 *              }
                 *          }
                 *          ParteAsistencia.Delete(item.Oid);
                 *      }
                 *      else
                 *      {
                 *          _entity.Asistencias = partes_bu;
                 *
                 *          return false;
                 *      }
                 *  }
                 * }*/
                PgMng.Grow();

                //Al finalizar se añaden todos los partes nuevos que no tenían coincidencia a la lista de
                //partes del horario
                foreach (ParteAsistencia item in nueva)
                {
                    _entity.Asistencias.AddItem(item);
                }
                PgMng.Grow();

                return(true);
            }
            catch { return(false); }
            finally
            {
                PgMng.FillUp();
            }
        }
        protected override bool CrearPartes()
        {
            int  count      = 0;
            long oid_modulo = 0;
            int  index      = 0;

            PgMng.Reset(4, 1, Resources.Messages.CREANDO_PARTES_ASISTENCIA, this);

            try
            {
                PromocionInfo promo   = PromocionInfo.Get(_entity.OidPromocion, true);
                AlumnoList    alumnos = AlumnoList.GetListByPromocion(promo.Oid, true);

                if (promo.Sesiones.Count == 0)
                {
                    Promocion promocion = Promocion.Get(_entity.OidPromocion, false);
                    promocion.LoadChilds(typeof(Sesion_Promocion));
                    List <List <long> > duracion_sesiones = _entity.RellenaHorasSemana();
                    foreach (List <long> lista in duracion_sesiones)
                    {
                        foreach (long item in lista)
                        {
                            Sesion_Promocion ses = Sesion_Promocion.NewChild(promocion);
                            ses.NHoras = duracion_sesiones.IndexOf(lista) + 1;
                            if (item > 69)
                            {
                                ses.Sabado = true;
                            }
                            ses.HoraInicio = DateTime.Parse((item % 14 + 10).ToString("00") + ":00");
                            promocion.Sesiones.Add(ses);
                        }
                    }
                    promo = promocion.GetInfo(true);
                    promocion.CloseSession();
                }
                PgMng.Grow();

                foreach (Sesion item in _entity.Sesions)
                {
                    //Desmarca las clases que han sido marcadas como impartidas pero que tienen
                    //fecha y horas mayor que la actual
                    if (item.Fecha.Date > DateTime.Today.Date

                        /*|| (item.Fecha.Date.Equals(DateTime.Today.Date)
                         * && item.Hora.TimeOfDay > DateTime.Today.TimeOfDay)*/
                        && item.Estado == 3)
                    {
                        item.Estado = 2;
                    }

                    //No genera partes de asistencia para clases que no se han impartido
                    //if (item.Estado != 3)
                    //    continue;

                    //si ya hay un parte para esta práctica no se vuelve a crear
                    if (item.OidClasePractica > 0)
                    {
                        bool esta = false;
                        foreach (ParteAsistencia p in _entity.Asistencias)
                        {
                            //ClasePracticaInfo clase = null;

                            /*foreach (ClasePracticaList listap in _practicas)
                             * {
                             *  clase = listap.GetItem(item.OidClasePractica);
                             *  if (clase != null) break;
                             * }*/
                            //clase = _practicas[(int)item.Grupo].GetItem(item.OidClasePractica);
                            foreach (Clase_Parte cp in p.Clases)
                            {
                                if (cp.Tipo == 2 &&
                                    cp.OidClase == item.OidClasePractica &&
                                    (cp.Grupo == 3 || cp.Grupo == item.Grupo))
                                {
                                    esta = true;
                                    break;
                                }
                            }

                            /*if (p.Tipo == 2 && p.Sesiones.Contains(item.OidClasePractica.ToString())
                             *  && !p.Texto.Contains(" G" + Convert.ToString(3 - item.Grupo) + " "))
                             * {
                             *  esta = true;
                             *  break;
                             * }*/
                            if (esta)
                            {
                                break;
                            }
                        }
                        if (esta)
                        {
                            continue;
                        }
                    }

                    if (item.OidClaseTeorica > 0 ||
                        item.OidClasePractica > 0 ||
                        item.OidClaseExtra > 0)
                    {
                        string aux             = string.Empty;
                        long   oid_modulo_item = 0;
                        string sesion          = string.Empty;
                        long   tipo            = 0;
                        long   oid_clase       = 0;
                        long   grupo           = 3;

                        if (item.OidClasePractica != 0)
                        {
                            ClasePracticaInfo clase = null;

                            /*foreach (ClasePracticaList listap in _practicas)
                             * {
                             *  clase = listap.GetItem(item.OidClasePractica);
                             *  if (clase != null) break;
                             * }*/
                            clase           = _practicas[(int)item.Grupo].GetItem(item.OidClasePractica);
                            oid_modulo_item = clase.OidModulo;
                            aux             = clase.Alias + " G" + item.Grupo.ToString();
                            sesion          = clase.Oid.ToString();
                            tipo            = 2;
                            grupo           = clase.Grupo;
                            oid_clase       = clase.Oid;
                        }
                        if (item.OidClaseTeorica != 0)
                        {
                            ClaseTeoricaInfo clase = _teoricas.GetItem(item.OidClaseTeorica);
                            oid_modulo_item = clase.OidModulo;
                            aux             = clase.Alias;
                            sesion          = clase.Oid.ToString();
                            tipo            = 1;
                            oid_clase       = clase.Oid;
                        }
                        if (item.OidClaseExtra != 0)
                        {
                            ClaseExtraInfo clase = _extras.GetItem(item.OidClaseExtra);
                            oid_modulo_item = clase.OidModulo;
                            aux             = clase.Alias;
                            sesion          = clase.Oid.ToString();
                            tipo            = 3;
                            oid_clase       = clase.Oid;
                        }

                        if (oid_modulo_item != 0)
                        {
                            if (item.OidClasePractica == 0)
                            {
                                foreach (Sesion_PromocionInfo ses in promo.Sesiones)
                                {
                                    if (ses.HoraInicio.TimeOfDay == item.Hora.TimeOfDay)
                                    {
                                        count = 0;
                                        break;
                                    }
                                }
                            }
                            if (count == 0)
                            {
                                ParteAsistencia parte = ParteAsistencia.NewChild(_entity);
                                parte.Texto                 = aux + " ";
                                parte.Sesiones              = sesion + " ";
                                parte.Fecha                 = item.Fecha;
                                parte.HoraInicio            = item.Hora.ToString("HH:mm");
                                parte.Tipo                  = tipo;
                                parte.OidInstructor         = item.OidProfesor;
                                parte.OidInstructorEfectivo = item.OidProfesor;
                                parte.CreateAlumnosList(alumnos, item.Grupo);
                                if (index == _entity.Sesions.Count - 1)
                                {
                                    parte.NHoras = count.ToString() + ":00";
                                }
                                parte.MarkItemChild();
                                _entity.Asistencias.AddItem(parte);
                                oid_modulo = oid_modulo_item;
                                count++;
                                if (tipo == 2)
                                {
                                    _entity.Asistencias[_entity.Asistencias.Count - 1].NHoras = "5:00";
                                    _entity.Asistencias[_entity.Asistencias.Count - 1].CreatePartePracticas(item.OidClasePractica);
                                }
                                else
                                {
                                    _entity.Asistencias[_entity.Asistencias.Count - 1].NHoras = count.ToString() + ":00";
                                }
                            }
                            else
                            {
                                ParteAsistencia ultima = _entity.Asistencias[_entity.Asistencias.Count - 1];

                                if (ultima.OidHorario == item.OidHorario &&
                                    ultima.Fecha.Date.Equals(item.Fecha.Date) &&
                                    Convert.ToDateTime(ultima.HoraInicio).AddHours(count).Hour.Equals(item.Hora.Hour) &&
                                    ultima.OidInstructor == item.OidProfesor &&
                                    oid_modulo_item == oid_modulo &&
                                    ((ultima.Tipo == 1 && item.OidClaseTeorica > 0) ||
                                     (ultima.Tipo == 2 && item.OidClasePractica > 0) ||
                                     (ultima.Tipo == 3 && item.OidClaseExtra > 0)))
                                {
                                    count++;
                                    sesion += " ";
                                    if ((item.OidClasePractica > 0 && _entity.Asistencias[_entity.Asistencias.Count - 1].Sesiones != sesion) || item.OidClasePractica == 0)
                                    {
                                        _entity.Asistencias[_entity.Asistencias.Count - 1].Texto    += aux + " ";
                                        _entity.Asistencias[_entity.Asistencias.Count - 1].Sesiones += sesion;
                                        _entity.Asistencias[_entity.Asistencias.Count - 1].NHoras    = count.ToString() + ":00";
                                        if (index == _entity.Sesions.Count - 1)
                                        {
                                            //_entity.Asistencias[_entity.Asistencias.Count - 1].Fecha = item.Fecha;
                                            //_entity.Asistencias[_entity.Asistencias.Count - 1].Hora = item.Hora;
                                            //_entity.Asistencias[_entity.Asistencias.Count - 1].OidInstructor = item.OidProfesor;
                                            count = 0;
                                        }
                                    }
                                    else
                                    {
                                        ClasePracticaInfo clase = null;
                                        clase = _practicas[(int)item.Grupo].GetItem(item.OidClasePractica);
                                        string texto_aux = clase.Alias + " G" + item.Grupo.ToString() + " ";
                                        if (_entity.Asistencias[_entity.Asistencias.Count - 1].Texto != texto_aux)
                                        {
                                            _entity.Asistencias[_entity.Asistencias.Count - 1].Texto = clase.Alias;

                                            _entity.Asistencias[_entity.Asistencias.Count - 1].CreateAlumnosList(alumnos, 3);
                                            _entity.Asistencias[_entity.Asistencias.Count - 1].CreatePartePracticas(item.OidClasePractica);
                                        }
                                    }
                                }
                                else
                                {
                                    ParteAsistencia parte = ParteAsistencia.NewChild(_entity);
                                    parte.Texto                 = aux + " ";
                                    parte.Sesiones              = sesion + " ";
                                    parte.Fecha                 = item.Fecha;
                                    parte.HoraInicio            = item.Hora.ToString("HH:mm");
                                    parte.Tipo                  = tipo;
                                    parte.OidInstructor         = item.OidProfesor;
                                    parte.OidInstructorEfectivo = item.OidProfesor;
                                    parte.CreateAlumnosList(alumnos, item.Grupo);
                                    if (index == _entity.Sesions.Count - 1)
                                    {
                                        parte.NHoras = count.ToString() + ":00";
                                    }
                                    parte.MarkItemChild();
                                    _entity.Asistencias.AddItem(parte);
                                    oid_modulo = oid_modulo_item;
                                    count      = 1;
                                    if (tipo == 2)
                                    {
                                        _entity.Asistencias[_entity.Asistencias.Count - 1].NHoras = "5:00";
                                        _entity.Asistencias[_entity.Asistencias.Count - 1].CreatePartePracticas(item.OidClasePractica);
                                    }
                                    else
                                    {
                                        _entity.Asistencias[_entity.Asistencias.Count - 1].NHoras = count.ToString() + ":00";
                                    }
                                }
                            }
                            Clase_Parte registro = _entity.Asistencias[_entity.Asistencias.Count - 1].Clases.NewItem(_entity.Asistencias[_entity.Asistencias.Count - 1]);
                            registro.OidClase = oid_clase;
                            registro.Tipo     = tipo;
                            registro.Grupo    = grupo;
                        }
                    }
                    index++;
                }
                PgMng.Grow();

                return(true);
            }
            catch { return(false); }
            finally { PgMng.FillUp(); }
        }
 /// <summary>
 /// Asigna el objeto principal al origen de datos
 /// <returns>void</returns>
 /// </summary>
 protected override void RefreshMainData()
 {
     Datos_Alumnos.DataSource = AlumnoList.GetListByPromocion(EntityInfo.Oid, false);
     PgMng.FillUp();
 }