function Editar()
 {
     @session_start();
     $this->pessoa_logada = $_SESSION['id_pessoa'];
     @session_write_close();
     $obj_permissoes = new clsPermissoes();
     $obj_permissoes->permissao_cadastra(642, $this->pessoa_logada, 7, "educar_falta_nota_aluno_lst.php");
     //************************************* EDITA - MATRICULADO NUMA SERIE *************************************//
     if ($this->ref_ref_cod_serie) {
         //			if (is_numeric($this->modulo))
         //			{
         //				$this->mat_modulo = $this->modulo;
         //			}
         if (!$this->reprova_falta) {
             $this->editaSNotasFaltas();
         }
         /**
          * verifica se existem disciplinas sem notas
          *
          */
         $obj_nota_aluno = new clsPmieducarNotaAluno();
         $total = $obj_nota_aluno->getQtdRestanteNotasAlunoNaoApuraFaltas($this->ref_cod_matricula, $this->ref_ref_cod_serie, $this->ref_cod_turma, $this->modulo, $this->ref_ref_cod_escola);
         /* verifica se o aluno está em exame
          * e se todas as matérias do exame estão com notas
          */
         $aluno_esta_em_exame = $_POST["aluno_esta_em_exame"];
         $qtd_disciplinas_aluno_exame = $_POST["qtd_disciplinas_aluno_exame"];
         if ($aluno_esta_em_exame == 1) {
             $sql = "SELECT COUNT(0)\n\t\t\t\t\t\t\t\tFROM pmieducar.nota_aluno na\n\t\t\t\t\t\t\t\t, pmieducar.disciplina d\n\t\t\t\t\t\t\t\t, pmieducar.v_matricula_matricula_turma mmt\n\t\t\t\t\t\t\t\tWHERE na.ref_cod_matricula = '{$this->ref_cod_matricula}'\n\t\t\t\t\t\t\t\tAND na.ref_cod_matricula = mmt.cod_matricula\n\t\t\t\t\t\t\t\tAND mmt.ref_cod_turma = '{$this->ref_cod_turma}'\n\t\t\t\t\t\t\t\tAND na.ativo = 1\n\t\t\t\t\t\t\t\tAND mmt.ativo = 1\n\t\t\t\t\t\t\t\tAND na.ref_cod_disciplina = d.cod_disciplina\n\t\t\t\t\t\t\t\tAND na.ref_cod_serie = '{$this->ref_ref_cod_serie}'\n\t\t\t\t\t\t\t\tAND na.modulo = '{$this->modulo}'";
             $db = new clsBanco();
             $notas_exame_ja_recebidas = $db->CampoUnico($sql);
             if ($qtd_disciplinas_aluno_exame == $notas_exame_ja_recebidas) {
                 $total = 0;
             }
         }
         /**
          * existem disciplinas sem notas
          * somente cadastra e o modulo do aluno
          * continua igual sem calcular nada
          */
         if ($total > 0) {
             /**
              * caso NENHUMA materia tenha nota
              * (por motivo de exclusao) verificar se o modulo da matricula
              * é maior que o ultimo modulo com nota
              * entao decrementar o modulo da matricula
              */
             $ultimo_modulo_matricula = $obj_nota_aluno->getMaxNotas($this->ref_cod_matricula);
             if ($ultimo_modulo_matricula < $this->mat_modulo) {
                 if ($this->nota_foi_removida && $this->pessoa_logada == 184580) {
                     $obj_hst_escolar = new clsPmieducarHistoricoEscolar();
                     $lst_hst_escolar = $obj_hst_escolar->lista($this->ref_cod_aluno, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, 1, null, null, null, null, $this->ref_cod_matricula);
                     if (is_array($lst_hst_escolar)) {
                         $det_hst_escolar = array_shift($lst_hst_escolar);
                         $obj_hd = new clsPmieducarHistoricoDisciplinas();
                         $excluiu_hd = $obj_hd->excluirTodos($this->ref_cod_aluno, $det_hst_escolar["sequencial"]);
                         if (!$excluiu_hd) {
                             $this->mensagem = "Exclus&atilde;o do Hist&oacute;rico Disciplina n&atilde;o realizado.<br>";
                             return false;
                         }
                         $obj_hst_escolar = new clsPmieducarHistoricoEscolar($this->ref_cod_aluno, $det_hst_escolar["sequencial"], $this->pessoa_logada, null, null, null, null, null, null, null, null, null, null, null, null, 0);
                         $excluiu_he = $obj_hst_escolar->excluir();
                         if (!$excluiu_he) {
                             $this->mensagem = "Exclus&atilde;o do Hist&oacute;rico Escolar n&atilde;o realizado.<br>";
                             return false;
                         }
                     }
                 }
                 $obj = new clsPmieducarMatricula($this->ref_cod_matricula, null, null, null, $this->pessoa_logada, null, null, 3, null, null, null, null, null, $ultimo_modulo_matricula);
                 $editou = $obj->edita();
             }
             $this->mensagem .= "Cadastro efetuado com sucesso.<br>";
             header("Location: educar_falta_nota_aluno_det.php?ref_cod_matricula={$this->ref_cod_matricula}&ref_cod_turma={$this->ref_cod_turma}&sequencial={$this->ref_sequencial_matricula_turma}");
             die;
             return true;
         } else {
             //$ultimo_modulo_matricula = $obj_nota_aluno->getMaxNotas($this->ref_cod_matricula);
             //die("$ultimo_modulo_matricula < $this->mat_modulo || $this->modulo");
             if ($this->mat_modulo == $this->modulo) {
                 $obj = new clsPmieducarMatricula($this->ref_cod_matricula, null, null, null, $this->pessoa_logada, null, null, 3, null, null, null, null, null, $ultimo_modulo_matricula);
                 $editou = $obj->avancaModulo();
             }
         }
         $aprovado = 3;
         if ($this->qtd_modulos <= $this->mat_modulo) {
             $obj_curso = new clsPmieducarCurso($this->ref_cod_curso);
             $det_curso = $obj_curso->detalhe();
             $frequencia_minima = $det_curso["frequencia_minima"];
             $hora_falta = $det_curso["hora_falta"];
             $carga_horaria_curso = $det_curso["carga_horaria"];
             $obj_esd = new clsPmieducarEscolaSerieDisciplina();
             $lst_esd = $obj_esd->lista($this->ref_ref_cod_serie, $this->ref_ref_cod_escola, null, 1);
             if (is_array($lst_esd)) {
                 $obj_nota_aluno = new clsPmieducarNotaAluno();
                 $max_nota = $obj_nota_aluno->getMaxNotas($this->ref_cod_matricula);
                 $obj_serie = new clsPmieducarSerie($this->ref_ref_cod_serie);
                 $det_serie = $obj_serie->detalhe();
                 $media_especial = $det_serie['media_especial'];
                 foreach ($lst_esd as $campo) {
                     $obj_nota_aluno = new clsPmieducarNotaAluno();
                     $obj_nota_aluno->setOrderby("modulo ASC");
                     $lst_nota_aluno = $obj_nota_aluno->lista(null, null, null, $this->ref_ref_cod_serie, $this->ref_ref_cod_escola, $campo["ref_cod_disciplina"], $this->ref_cod_matricula, null, null, null, null, null, null, 1);
                     // so busca as notas da disciplina se nao for media especial
                     if (is_array($lst_nota_aluno) && !dbBool($media_especial)) {
                         foreach ($lst_nota_aluno as $key => $nota_aluno) {
                             if ($nota_aluno['nota']) {
                                 $soma_notas[$campo["ref_cod_disciplina"]][$key] = $nota_aluno['nota'] * 2;
                             } else {
                                 $obj_avaliacao_valores = new clsPmieducarTipoAvaliacaoValores($nota_aluno["ref_ref_cod_tipo_avaliacao"], $nota_aluno["ref_sequencial"]);
                                 $det_avaliacao_valores = $obj_avaliacao_valores->detalhe();
                                 $soma_notas[$campo["ref_cod_disciplina"]][$key] = $det_avaliacao_valores["valor"];
                             }
                         }
                     }
                     if (!$this->falta_ch_globalizada) {
                         $obj_falta_aluno = new clsPmieducarFaltaAluno();
                         $lst_falta_aluno = $obj_falta_aluno->lista(null, null, null, $this->ref_ref_cod_serie, $this->ref_ref_cod_escola, $campo["ref_cod_disciplina"], $this->ref_cod_matricula, null, null, null, null, null, 1);
                         if (is_array($lst_falta_aluno)) {
                             foreach ($lst_falta_aluno as $key => $falta_aluno) {
                                 $soma_faltas[$campo["ref_cod_disciplina"]][$key] = $falta_aluno["faltas"];
                             }
                         }
                     }
                 }
                 if (is_array($soma_faltas)) {
                     foreach ($soma_faltas as $disciplina => $faltas) {
                         foreach ($faltas as $falta) {
                             $faltas_media_aluno[$disciplina] += $falta;
                         }
                     }
                 }
             }
             if (is_array($faltas_media_aluno)) {
                 foreach ($faltas_media_aluno as $disciplina => $faltas) {
                     $obj_disciplina = new clsPmieducarDisciplina($disciplina);
                     $det_disciplina = $obj_disciplina->detalhe();
                     $carga_horaria_disciplina = $det_disciplina["carga_horaria"];
                     // calcula o maximo de horas q o aluno pode faltar na disciplina
                     $max_falta = $carga_horaria_disciplina * $frequencia_minima / 100;
                     $max_falta = $carga_horaria_disciplina - $max_falta;
                     // calcula a quantidade de faltas por hora do aluno na disciplina
                     $faltas *= $hora_falta;
                     if ($faltas > $max_falta && !$this->reprova_falta) {
                         echo "<script>\n\t\t\t\t\t\t\t\t\tif( confirm('O aluno excedeu o valor máximo de faltas permitidas, \\n deseja reprová-lo? \\n Quantidade de faltas do aluno: {$faltas} \\n Valor máximo de faltas permitido: {$max_falta} \\n \\n Clique em OK para reprová-lo ou em CANCELAR para ignorar.') )\n\t\t\t\t\t\t\t\t\t{\n\t\t\t\t\t\t\t\t\t\twindow.location = 'educar_falta_nota_aluno_cad.php?ref_cod_matricula={$this->ref_cod_matricula}&ref_cod_turma={$this->ref_cod_turma}&ref_sequencial_matricula_turma={$this->ref_sequencial_matricula_turma}&modulo={$this->modulo}&falta=s';\n\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t\telse\n\t\t\t\t\t\t\t\t\t{\n\t\t\t\t\t\t\t\t\t\twindow.location = 'educar_falta_nota_aluno_cad.php?ref_cod_matricula={$this->ref_cod_matricula}&ref_cod_turma={$this->ref_cod_turma}&ref_sequencial_matricula_turma={$this->ref_sequencial_matricula_turma}&modulo={$this->modulo}&falta=n';\n\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t</script>";
                         return true;
                     }
                     if ($this->reprova_falta == 's') {
                         $aprovado = 2;
                         // aluno reprovado por falta
                     }
                 }
             } else {
                 $obj_serie = new clsPmieducarSerie($this->ref_ref_cod_serie);
                 $det_serie = $obj_serie->detalhe();
                 $carga_horaria_serie = $det_serie["carga_horaria"];
                 // calcula o maximo de horas q o aluno pode faltar na serie
                 $max_falta = $carga_horaria_serie * $frequencia_minima / 100;
                 $max_falta = $carga_horaria_serie - $max_falta;
                 // calcula a quantidade de faltas por hora do aluno na serie
                 $obj_faltas = new clsPmieducarFaltas();
                 $lst_faltas = $obj_faltas->lista($this->ref_cod_matricula);
                 if (is_array($lst_faltas)) {
                     $total_faltas = 0;
                     foreach ($lst_faltas as $key => $faltas) {
                         $total_faltas += $faltas['falta'];
                     }
                     $total_faltas *= $hora_falta;
                     if ($total_faltas > $max_falta && !$this->reprova_falta) {
                         echo "<script>\n\t\t\t\t\t\t\t\t\tif( confirm('O aluno excedeu o valor máximo de faltas permitidas, \\n deseja reprová-lo? \\n Quantidade de faltas do aluno: {$total_faltas} \\n Valor máximo de faltas permitido: {$max_falta} \\n \\n Clique em OK para reprová-lo ou em CANCELAR para ignorar.') )\n\t\t\t\t\t\t\t\t\t{\n\t\t\t\t\t\t\t\t\t\twindow.location = 'educar_falta_nota_aluno_cad.php?ref_cod_matricula={$this->ref_cod_matricula}&ref_cod_turma={$this->ref_cod_turma}&ref_sequencial_matricula_turma={$this->ref_sequencial_matricula_turma}&modulo={$this->modulo}&falta=s';\n\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t\telse\n\t\t\t\t\t\t\t\t\t{\n\t\t\t\t\t\t\t\t\t\twindow.location = 'educar_falta_nota_aluno_cad.php?ref_cod_matricula={$this->ref_cod_matricula}&ref_cod_turma={$this->ref_cod_turma}&ref_sequencial_matricula_turma={$this->ref_sequencial_matricula_turma}&modulo={$this->modulo}&falta=n';\n\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t</script>";
                         return true;
                     }
                     if ($this->reprova_falta == 's') {
                         $aprovado = 2;
                         // aluno reprovado por falta
                     }
                 }
             }
             /**
              * calculo de media especial
              */
             if (dbBool($media_especial)) {
                 $objNotaAluno = new clsPmieducarNotaAluno();
                 $media = $objNotaAluno->getMediaEspecialAluno($this->ref_cod_matricula, $this->ref_ref_cod_serie, $this->ref_ref_cod_escola, $this->qtd_modulos, $this->media);
                 if ($media < $this->media) {
                     //  reprovado direto sem exame
                     $aprovado = 2;
                 }
             }
         }
         $db2 = new clsBanco();
         //retorna quantas matérias o aluno cursa não contabilizando as matérias com dispensa
         $sql = "SELECT COUNT(0) FROM pmieducar.escola_serie_disciplina WHERE ref_ref_cod_serie = {$this->ref_ref_cod_serie} \n\t\t\t\t\tAND ref_ref_cod_escola = {$this->ref_ref_cod_escola} AND escola_serie_disciplina.ativo = 1\n\t\t\t\t\tAND ref_cod_disciplina NOT IN (\n\t\t\t\t\t\tSELECT ref_cod_disciplina\n\t\t\t\t\t\tFROM pmieducar.dispensa_disciplina WHERE \n\t\t\t\t\t\tref_cod_matricula = {$this->ref_cod_matricula} AND ref_cod_serie = {$this->ref_ref_cod_serie}\n\t\t\t\t\t\tAND ref_cod_escola = {$this->ref_ref_cod_escola} AND ativo = 1\n\t\t\t\t\t)";
         $qtd_materias = $db2->CampoUnico($sql);
         //retorna quantas notas notas o aluno possui não contabilizandoa das matérias dispensadas
         $sql = "SELECT COUNT(0) FROM pmieducar.nota_aluno \n\t\t\t\t\tWHERE ref_cod_matricula = {$this->ref_cod_matricula} AND ativo = 1\n\t\t\t\t\tAND ref_cod_disciplina NOT IN (\n\t\t\t\t\t\t\tSELECT ref_cod_disciplina FROM pmieducar.dispensa_disciplina WHERE \n\t\t\t\t\t\t\tref_cod_matricula = {$this->ref_cod_matricula} AND ref_cod_serie = {$this->ref_ref_cod_serie} \n\t\t\t\t\t\t\tAND ref_cod_escola = {$this->ref_ref_cod_escola} AND ativo = 1\n\t\t\t\t\t)";
         //variável em uma edição para verificar se o aluno possui todas as notas
         //para mudar o estado de aprovado dele
         $qtd_notas_possui = $db2->CampoUnico($sql);
         $possui_todas_as_notas = $this->qtd_modulos * $qtd_materias >= $qtd_notas_possui || $aluno_esta_em_exame == 1 ? true : false;
         if ($this->qtd_modulos < $this->mat_modulo && $this->qtd_modulos == $max_nota && !dbBool($media_especial)) {
             if (is_array($soma_notas) && !dbBool($media_especial)) {
                 foreach ($soma_notas as $disciplina => $notas) {
                     foreach ($notas as $nota) {
                         if (dbBool($det_serie["ultima_nota_define"])) {
                             $nota_media_aluno[$disciplina] = $nota;
                         } else {
                             $nota_media_aluno[$disciplina] += $nota;
                         }
                     }
                     if (!dbBool($det_serie["ultima_nota_define"])) {
                         $nota_media_aluno[$disciplina] /= $this->mat_modulo - 1;
                     }
                 }
                 foreach ($nota_media_aluno as $disciplina => $nota) {
                     $obj_avaliacao_valores = new clsPmieducarTipoAvaliacaoValores();
                     $lst_avaliacao_valores = $obj_avaliacao_valores->lista($this->ref_cod_tipo_avaliacao, null, null, null, $nota, $nota);
                     if (is_array($lst_avaliacao_valores)) {
                         $det_avaliacao_valores = array_shift($lst_avaliacao_valores);
                         $valor = $det_avaliacao_valores["valor"];
                     }
                     /**
                      * verifica se existem disciplinas sem notas
                      * somente aprova caso seja zero
                      */
                     //$obj_nota_aluno = new clsPmieducarNotaAluno();
                     //	$total = $obj_nota_aluno->getQtdRestanteNotasAlunoNaoApuraFaltas($this->ref_cod_matricula,$this->ref_ref_cod_serie,$this->ref_cod_turma,$this->modulo,$this->ref_ref_cod_escola);
                     if ($nota < $this->media && $this->media_exame && !$this->conceitual && $possui_todas_as_notas) {
                         $em_exame = true;
                         // aluno em exame
                     } else {
                         if ($valor < $this->media && !$this->media_exame && !$this->conceitual && $possui_todas_as_notas) {
                             $aprovado = 2;
                             // aluno reprovado direto (n existe exame)
                         }
                     }
                 }
             }
         } else {
             if ($this->qtd_modulos < $this->mat_modulo && $this->qtd_modulos < $max_nota && !dbBool($media_especial)) {
                 //				echo "<pre>"; print_r($soma_notas);
                 foreach ($soma_notas as $disciplina => $notas) {
                     $qtd_notas = 0;
                     foreach ($notas as $nota) {
                         $nota_media_aluno[$disciplina] += $nota;
                         $qtd_notas++;
                     }
                     if ($qtd_notas == $this->modulo) {
                         $nota_media_aluno[$disciplina] /= $this->modulo + 1;
                     } else {
                         $nota_media_aluno[$disciplina] /= $this->modulo - 1;
                     }
                 }
                 foreach ($nota_media_aluno as $disciplina => $nota) {
                     $obj_avaliacao_valores = new clsPmieducarTipoAvaliacaoValores();
                     $lst_avaliacao_valores = $obj_avaliacao_valores->lista($this->ref_cod_tipo_avaliacao, null, null, null, $nota, $nota);
                     if (is_array($lst_avaliacao_valores)) {
                         $det_avaliacao_valores = array_shift($lst_avaliacao_valores);
                         $valor = $det_avaliacao_valores["valor"];
                         if ($valor < $this->media_exame) {
                             $aprovado = 2;
                             // aluno reprovado no exame
                         }
                         /*else if ( ($valor < $this->media) && ($this->qtd_modulos >= $this->modulo) )
                         		$aprovado = 7; // aluno em exame*/
                     }
                 }
             }
         }
         /**
          * verifica se existem disciplinas sem notas
          * somente aprova caso seja zero
          */
         //$obj_nota_aluno = new clsPmieducarNotaAluno();
         //$total = $obj_nota_aluno->getQtdRestanteNotasAlunoNaoApuraFaltas($this->ref_cod_matricula,$this->ref_ref_cod_serie,$this->ref_cod_turma,$this->modulo,$this->ref_ref_cod_escola);
         if ($this->conceitual) {
             $aprovado = $this->aprovado;
             // situacao definida pelo professor
         } else {
             if (!$em_exame && $this->qtd_modulos <= $this->mat_modulo && $aprovado == 3 && !$this->conceitual && $possui_todas_as_notas) {
                 $aprovado = 1;
                 // aluno aprovado
             }
         }
         $obj = new clsPmieducarMatricula($this->ref_cod_matricula, null, null, null, $this->pessoa_logada, null, null, $aprovado);
         $editou = $obj->edita();
         //die($aprovado);
         if ($editou) {
             /**
              * aluno reprovado mantem historico
              * 01/03/2006
              */
             if ($aprovado == 2 || $aprovado == 3 || $aprovado == 1) {
                 $obj_hst_escolar = new clsPmieducarHistoricoEscolar();
                 $lst_hst_escolar = $obj_hst_escolar->lista($this->ref_cod_aluno, null, null, null, $det_serie["nm_serie"], $this->ano_letivo, $carga_horaria_serie, null, null, null, null, null, null, null, null, null, null, null, null, $this->ref_cod_instituicao, 0, null, $this->ref_cod_matricula);
                 if (is_array($lst_hst_escolar)) {
                     $det_hst_escolar = array_shift($lst_hst_escolar);
                     $obj_hd = new clsPmieducarHistoricoDisciplinas();
                     $excluiu_hd = $obj_hd->excluirTodos($this->ref_cod_aluno, $det_hst_escolar["sequencial"]);
                     if (!$excluiu_hd) {
                         $this->mensagem = "Exclus&atilde;o do Hist&oacute;rico Disciplina n&atilde;o realizado.<br>";
                         return false;
                     }
                     $obj_hst_escolar = new clsPmieducarHistoricoEscolar($this->ref_cod_aluno, $det_hst_escolar["sequencial"], $this->pessoa_logada, null, null, null, null, null, null, null, null, null, null, null, null, 0);
                     $excluiu_he = $obj_hst_escolar->excluir();
                     if (!$excluiu_he) {
                         $this->mensagem = "Exclus&atilde;o do Hist&oacute;rico Escolar n&atilde;o realizado.<br>";
                         return false;
                     }
                 }
             }
             /*else */
             if ($aprovado == 1 || $aprovado == 2) {
                 $obj_serie = new clsPmieducarSerie($this->ref_ref_cod_serie);
                 $det_serie = $obj_serie->detalhe();
                 $carga_horaria_serie = $det_serie["carga_horaria"];
                 $obj_escola = new clsPmieducarEscola($this->ref_ref_cod_escola);
                 $det_escola = $obj_escola->detalhe();
                 $ref_idpes = $det_escola["ref_idpes"];
                 // busca informacoes da escola
                 if ($ref_idpes) {
                     $obj_escola = new clsPessoaJuridica($ref_idpes);
                     $det_escola = $obj_escola->detalhe();
                     $nm_escola = $det_escola["fantasia"];
                     if ($det_escola) {
                         $cidade = $det_escola["cidade"];
                         $uf = $det_escola["sigla_uf"];
                     }
                 } else {
                     if (class_exists("clsPmieducarEscolaComplemento")) {
                         $obj_escola = new clsPmieducarEscolaComplemento($this->ref_ref_cod_escola);
                         $det_escola = $obj_escola->detalhe();
                         $nm_escola = $det_escola["nm_escola"];
                         $cidade = $det_escola["municipio"];
                     }
                 }
                 if ($this->padrao_ano_escolar) {
                     $extra_curricular = 0;
                 } else {
                     $extra_curricular = 1;
                 }
                 $sql = "SELECT SUM(falta) FROM pmieducar.faltas WHERE ref_cod_matricula = {$this->ref_cod_matricula}";
                 $db5 = new clsBanco();
                 $total_faltas = $db5->CampoUnico($sql);
                 $obj_hst_escolar = new clsPmieducarHistoricoEscolar();
                 $lst_hst_escolar = $obj_hst_escolar->lista($this->ref_cod_aluno, null, null, null, $det_serie["nm_serie"], $this->ano_letivo, $carga_horaria_serie, null, null, null, null, null, null, null, null, null, null, null, null, $this->ref_cod_instituicao, 0, null, $this->ref_cod_matricula);
                 if (is_array($lst_hst_escolar)) {
                     $det_hst_escolar = array_shift($lst_hst_escolar);
                     $obj = new clsPmieducarHistoricoEscolar($this->ref_cod_aluno, $det_hst_escolar["sequencial"], $this->pessoa_logada, null, null, null, null, null, null, $cidade, $uf, null, $aprovado, null, null, 1, $total_faltas, null, null, $extra_curricular);
                     $editou_he = $obj->edita();
                 } else {
                     $obj = new clsPmieducarHistoricoEscolar($this->ref_cod_aluno, null, null, $this->pessoa_logada, $det_serie["nm_serie"], $this->ano_letivo, $carga_horaria_serie, null, $nm_escola, $cidade, $uf, null, $aprovado, null, null, 1, $total_faltas, $this->ref_cod_instituicao, 0, $extra_curricular, $this->ref_cod_matricula);
                     $cadastrou_he = $obj->cadastra();
                 }
                 if (($editou_he || $cadastrou_he) && !$this->conceitual) {
                     if ($cadastrou_he) {
                         $obj_historico = new clsPmieducarHistoricoEscolar();
                         $sequencial = $obj_historico->getMaxSequencial($this->ref_cod_aluno);
                     } else {
                         $sequencial = $det_hst_escolar["sequencial"];
                     }
                     $historico_disciplina = array();
                     foreach ($nota_media_aluno as $key => $nota) {
                         $historico_disciplina[$key] = array($nota, $faltas_media_aluno[$key]);
                     }
                     foreach ($historico_disciplina as $disciplina => $campo) {
                         $obj_disciplina = new clsPmieducarDisciplina($disciplina);
                         $det_disciplina = $obj_disciplina->detalhe();
                         $nm_disciplina = $det_disciplina["nm_disciplina"];
                         $obj_avaliacao_valores = new clsPmieducarTipoAvaliacaoValores();
                         $lst_avaliacao_valores = $obj_avaliacao_valores->lista($this->ref_cod_tipo_avaliacao, null, null, null, $campo[0], $campo[0]);
                         if (is_array($lst_avaliacao_valores)) {
                             $det_avaliacao_valores = array_shift($lst_avaliacao_valores);
                             $nm_nota = $det_avaliacao_valores["nome"];
                             $obj_hd = new clsPmieducarHistoricoDisciplinas();
                             $lst_hd = $obj_hd->lista(null, $this->ref_cod_aluno, $sequencial, $nm_disciplina);
                             if (is_array($lst_hd)) {
                                 $det_hd = array_shift($lst_hd);
                                 $obj_hd = new clsPmieducarHistoricoDisciplinas($det_hd["sequencial"], $this->ref_cod_aluno, $sequencial, $nm_disciplina, $nm_nota, $campo[1]);
                                 $hst_disciplina = $obj_hd->edita();
                             } else {
                                 $obj_hd = new clsPmieducarHistoricoDisciplinas(null, $this->ref_cod_aluno, $sequencial, $nm_disciplina, $nm_nota, $campo[1]);
                                 $hst_disciplina = $obj_hd->cadastra();
                             }
                             if (!$hst_disciplina) {
                                 $this->mensagem = "Cadastro/Edi&ccedil;&atilde;o do Hist&oacute;rico Disciplinas n&atilde;o realizado.<br>";
                                 return false;
                             }
                         } else {
                             $this->mensagem = "N&atilde;o foi poss&iacute;vel encontrar os Valores do Tipo de Avalia&ccedil;&atilde;o.<br>";
                             return false;
                         }
                     }
                 }
                 /*
                 else if( (!$editou_he || !$cadastrou_he) && (!$this->conceitual) )
                 {
                 	$this->mensagem = "Cadastro/Edi&ccedil;&atilde;o do Hist&oacute;rico Escolar n&atilde;o realizado.<br>";
                 	return false;
                 }
                 */
             }
             $this->mensagem .= "Cadastro efetuado com sucesso.<br>";
             header("Location: educar_falta_nota_aluno_det.php?ref_cod_matricula={$this->ref_cod_matricula}&ref_cod_turma={$this->ref_cod_turma}&sequencial={$this->ref_sequencial_matricula_turma}");
             die;
             return true;
         }
         $this->mensagem = "Edi&ccedil;&atilde;o n&atilde;o realizada (Matr&iacute;cula).<br>";
         echo "<!--\nErro ao editar clsPmieducarMatricula\nvalores obrigatorios\nis_numeric( {$this->ref_cod_matricula} ) && is_numeric( {$this->pessoa_logada} ) && is_numeric( {$this->modulo} )\n-->";
         return false;
     } else {
         if (!$this->reprova_falta) {
             $this->editaCNotasFaltas();
         }
         /**
          * verifica se existem disciplinas sem notas
          *
          */
         $obj_nota_aluno = new clsPmieducarNotaAluno();
         $total = $obj_nota_aluno->getQtdRestanteNotasAlunoNaoApuraFaltas($this->ref_cod_matricula, $this->ref_ref_cod_serie, $this->ref_cod_turma, $this->modulo, $this->ref_ref_cod_escola);
         /**
          * existem disciplinas sem notas
          * somente cadastra e o modulo do aluno
          * continua igual sem calcular nada
          */
         if ($total) {
             $this->mensagem .= "Cadastro efetuado com sucesso.<br>";
             header("Location: educar_falta_nota_aluno_det.php?ref_cod_matricula={$this->ref_cod_matricula}&ref_cod_turma={$this->ref_cod_turma}&sequencial={$this->ref_sequencial_matricula_turma}");
             die;
             return true;
         }
         $aprovado = 3;
         if ($this->qtd_modulos <= $this->mat_modulo) {
             $obj_curso = new clsPmieducarCurso($this->ref_cod_curso);
             $det_curso = $obj_curso->detalhe();
             $frequencia_minima = $det_curso["frequencia_minima"];
             $hora_falta = $det_curso["hora_falta"];
             $carga_horaria_curso = $det_curso["carga_horaria"];
             $obj_disciplina = new clsPmieducarDisciplina();
             $lst_disciplina = $obj_disciplina->lista(null, null, null, null, null, null, null, null, null, null, null, null, 1, null, $this->ref_cod_curso);
             if (is_array($lst_disciplina)) {
                 foreach ($lst_disciplina as $campo) {
                     $obj_nota_aluno = new clsPmieducarNotaAluno();
                     $lst_nota_aluno = $obj_nota_aluno->lista(null, null, null, null, null, null, $this->ref_cod_matricula, null, null, null, null, null, null, 1, null, $campo["cod_disciplina"]);
                     if (is_array($lst_nota_aluno)) {
                         foreach ($lst_nota_aluno as $key => $nota_aluno) {
                             if ($nota_aluno["nota"]) {
                                 $soma_notas[$campo["cod_disciplina"]][$key] = $nota_aluno["nota"] * 2;
                             } else {
                                 $obj_avaliacao_valores = new clsPmieducarTipoAvaliacaoValores($nota_aluno["ref_ref_cod_tipo_avaliacao"], $nota_aluno["ref_sequencial"]);
                                 $det_avaliacao_valores = $obj_avaliacao_valores->detalhe();
                                 $soma_notas[$campo["cod_disciplina"]][$key] = $det_avaliacao_valores["valor"];
                             }
                         }
                     }
                     if (!$this->falta_ch_globalizada) {
                         $obj_falta_aluno = new clsPmieducarFaltaAluno();
                         $lst_falta_aluno = $obj_falta_aluno->lista(null, null, null, null, null, null, $this->ref_cod_matricula, null, null, null, null, null, 1, null, $campo["cod_disciplina"]);
                         if (is_array($lst_falta_aluno)) {
                             foreach ($lst_falta_aluno as $key => $falta_aluno) {
                                 $soma_faltas[$campo["cod_disciplina"]][$key] = $falta_aluno["faltas"];
                             }
                         }
                     }
                 }
                 if (is_array($soma_faltas)) {
                     foreach ($soma_faltas as $disciplina => $faltas) {
                         foreach ($faltas as $falta) {
                             $faltas_media_aluno[$disciplina] += $falta;
                         }
                     }
                 }
             }
             if (is_array($faltas_media_aluno)) {
                 foreach ($faltas_media_aluno as $disciplina => $faltas) {
                     $obj_disciplina = new clsPmieducarDisciplina($disciplina);
                     $det_disciplina = $obj_disciplina->detalhe();
                     $carga_horaria_disciplina = $det_disciplina["carga_horaria"];
                     // calcula o maximo de horas q o aluno pode faltar na disciplina
                     $max_falta = $carga_horaria_disciplina * $frequencia_minima / 100;
                     $max_falta = $carga_horaria_disciplina - $max_falta;
                     // calcula a quantidade de faltas por hora do aluno na disciplina
                     $faltas *= $hora_falta;
                     if ($faltas > $max_falta && !$this->reprova_falta) {
                         echo "<script>\n\t\t\t\t\t\t\t\t\tif( confirm('O aluno excedeu o valor máximo de faltas permitidas, \\n deseja reprová-lo? \\n Quantidade de faltas do aluno: {$faltas} \\n Valor máximo de faltas permitido: {$max_falta} \\n \\n Clique em OK para reprová-lo ou em CANCELAR para ignorar.') )\n\t\t\t\t\t\t\t\t\t{\n\t\t\t\t\t\t\t\t\t\twindow.location = 'educar_falta_nota_aluno_cad.php?ref_cod_matricula={$this->ref_cod_matricula}&ref_cod_turma={$this->ref_cod_turma}&ref_sequencial_matricula_turma={$this->ref_sequencial_matricula_turma}&modulo={$this->modulo}&falta=s';\n\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t\telse\n\t\t\t\t\t\t\t\t\t{\n\t\t\t\t\t\t\t\t\t\twindow.location = 'educar_falta_nota_aluno_cad.php?ref_cod_matricula={$this->ref_cod_matricula}&ref_cod_turma={$this->ref_cod_turma}&ref_sequencial_matricula_turma={$this->ref_sequencial_matricula_turma}&modulo={$this->modulo}&falta=n';\n\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t</script>";
                         return true;
                     }
                     if ($this->reprova_falta == 's') {
                         $aprovado = 2;
                         // aluno reprovado por falta
                     }
                 }
             } else {
                 // calcula o maximo de horas q o aluno pode faltar no curso
                 $max_falta = $carga_horaria_curso * $frequencia_minima / 100;
                 $max_falta = $carga_horaria_curso - $max_falta;
                 // calcula a qtd de faltas por hora do aluno no curso
                 $obj_faltas = new clsPmieducarFaltas();
                 $lst_faltas = $obj_faltas->lista($this->ref_cod_matricula);
                 if (is_array($lst_faltas)) {
                     $total_faltas = 0;
                     foreach ($lst_faltas as $key => $faltas) {
                         $total_faltas += $faltas['falta'];
                     }
                     $total_faltas *= $hora_falta;
                     if ($total_faltas > $max_falta && !$this->reprova_falta) {
                         echo "<script>\n\t\t\t\t\t\t\t\t\tif( confirm('O aluno excedeu o valor máximo de faltas permitidas, \\n deseja reprová-lo? \\n Quantidade de faltas do aluno: {$total_faltas} \\n Valor máximo de faltas permitido: {$max_falta} \\n \\n Clique em OK para reprová-lo ou em CANCELAR para ignorar.') )\n\t\t\t\t\t\t\t\t\t{\n\t\t\t\t\t\t\t\t\t\twindow.location = 'educar_falta_nota_aluno_cad.php?ref_cod_matricula={$this->ref_cod_matricula}&ref_cod_turma={$this->ref_cod_turma}&ref_sequencial_matricula_turma={$this->ref_sequencial_matricula_turma}&modulo={$this->modulo}&falta=s';\n\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t\telse\n\t\t\t\t\t\t\t\t\t{\n\t\t\t\t\t\t\t\t\t\twindow.location = 'educar_falta_nota_aluno_cad.php?ref_cod_matricula={$this->ref_cod_matricula}&ref_cod_turma={$this->ref_cod_turma}&ref_sequencial_matricula_turma={$this->ref_sequencial_matricula_turma}&modulo={$this->modulo}&falta=n';\n\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t</script>";
                         return true;
                     }
                     if ($this->reprova_falta == 's') {
                         $aprovado = 2;
                         // aluno reprovado por falta
                     }
                 }
             }
         }
         if ($this->qtd_modulos < $this->mat_modulo && $this->qtd_modulos == $max_nota) {
             if (is_array($soma_notas)) {
                 foreach ($soma_notas as $disciplina => $notas) {
                     foreach ($notas as $nota) {
                         $nota_media_aluno[$disciplina] += $nota;
                     }
                     $nota_media_aluno[$disciplina] /= $this->mat_modulo - 1;
                 }
                 foreach ($nota_media_aluno as $disciplina => $nota) {
                     $obj_avaliacao_valores = new clsPmieducarTipoAvaliacaoValores();
                     $lst_avaliacao_valores = $obj_avaliacao_valores->lista($this->ref_cod_tipo_avaliacao, null, null, null, $nota, $nota);
                     if (is_array($lst_avaliacao_valores)) {
                         $det_avaliacao_valores = array_shift($lst_avaliacao_valores);
                         $valor = $det_avaliacao_valores["valor"];
                         /*
                         if ( ($valor < $this->media) && $this->media_exame && !$this->conceitual )
                         {
                         	$em_exame = true;
                         }
                         else if ( ($valor < $this->media) && !$this->media_exame && !$this->conceitual )
                         {
                         	$aprovado = 2; // aluno reprovado direto (n existe exame)
                         }
                         */
                     }
                     /**
                      * verifica se existem disciplinas sem notas
                      * somente aprova caso seja zero
                      */
                     $obj_nota_aluno = new clsPmieducarNotaAluno();
                     $total = $obj_nota_aluno->getQtdRestanteNotasAlunoNaoApuraFaltas($this->ref_cod_matricula, $this->ref_ref_cod_serie, $this->ref_cod_turma, $this->modulo, $this->ref_ref_cod_escola);
                     if ($nota < $this->media && $this->media_exame && !$this->conceitual) {
                         $em_exame = true;
                         // aluno em exame
                     } else {
                         if ($valor < $this->media && !$this->media_exame && !$this->conceitual) {
                             $aprovado = 2;
                             // aluno reprovado direto (n existe exame)
                         }
                     }
                 }
             }
         } else {
             if ($this->qtd_modulos < $this->mat_modulo && $this->qtd_modulos < $max_nota) {
                 foreach ($soma_notas as $disciplina => $notas) {
                     $qtd_notas = 0;
                     foreach ($notas as $nota) {
                         $nota_media_aluno[$disciplina] += $nota;
                         $qtd_notas++;
                     }
                     if ($qtd_notas == $this->mat_modulo) {
                         $nota_media_aluno[$disciplina] /= $this->mat_modulo;
                     } else {
                         $nota_media_aluno[$disciplina] /= $this->mat_modulo - 1;
                     }
                 }
                 foreach ($nota_media_aluno as $disciplina => $nota) {
                     $obj_avaliacao_valores = new clsPmieducarTipoAvaliacaoValores();
                     $lst_avaliacao_valores = $obj_avaliacao_valores->lista($this->ref_cod_tipo_avaliacao, null, null, null, $nota, $nota);
                     if (is_array($lst_avaliacao_valores)) {
                         $det_avaliacao_valores = array_shift($lst_avaliacao_valores);
                         $valor = $det_avaliacao_valores["valor"];
                         if ($valor < $this->media_exame) {
                             $aprovado = 2;
                             // aluno reprovado no exame
                         }
                     }
                 }
             }
         }
         /**
          * verifica se existem disciplinas sem notas
          * somente aprova caso seja zero
          */
         //$obj_nota_aluno = new clsPmieducarNotaAluno();
         //$total = $obj_nota_aluno->getQtdRestanteNotasAlunoNaoApuraFaltas($this->ref_cod_matricula,$this->ref_ref_cod_serie,$this->ref_cod_turma,$this->modulo,$this->ref_ref_cod_escola);
         if ($this->conceitual) {
             $aprovado = $this->aprovado;
             // situacao definida pelo professor
         } else {
             if (!$em_exame && $this->qtd_modulos <= $this->mat_modulo && $aprovado == 3 && !$this->conceitual) {
                 $aprovado = 1;
                 // aluno aprovado
             }
         }
         $obj = new clsPmieducarMatricula($this->ref_cod_matricula, null, null, null, $this->pessoa_logada, null, null, $aprovado);
         $editou = $obj->edita();
         if ($editou) {
             /**
              * aluno reprovado edita nao remove do historico
              */
             if ($aprovado == 2 || $aprovado == 3) {
                 $obj_hst_escolar = new clsPmieducarHistoricoEscolar();
                 $lst_hst_escolar = $obj_hst_escolar->lista($this->ref_cod_aluno, null, null, null, $det_curso['nm_curso'], $this->ano_letivo, $carga_horaria_curso, null, null, null, null, null, null, null, null, null, null, null, null, $this->ref_cod_instituicao, 0, 1, $this->ref_cod_matricula);
                 if (is_array($lst_hst_escolar)) {
                     $det_hst_escolar = array_shift($lst_hst_escolar);
                     $obj_hd = new clsPmieducarHistoricoDisciplinas();
                     $excluiu_hd = $obj_hd->excluirTodos($this->ref_cod_aluno, $det_hst_escolar["sequencial"]);
                     if (!$excluiu_hd) {
                         $this->mensagem = "Exclus&atilde;o do Hist&oacute;rico Disciplina n&atilde;o realizado.<br>";
                         return false;
                     }
                     $obj_hst_escolar = new clsPmieducarHistoricoEscolar($this->ref_cod_aluno, $det_hst_escolar["sequencial"], $this->pessoa_logada, null, null, null, null, null, null, null, null, null, null, null, null, 0);
                     $excluiu_he = $obj_hst_escolar->excluir();
                     if (!$excluiu_he) {
                         $this->mensagem = "Exclus&atilde;o do Hist&oacute;rico Escolar n&atilde;o realizado.<br>";
                         return false;
                     }
                 }
             }
             /*else*/
             if ($aprovado == 1 || $aprovado == 2) {
                 // busca informacoes da instituicao
                 $obj_instituicao = new clsPmieducarInstituicao($this->ref_cod_instituicao);
                 $det_instituicao = $obj_instituicao->detalhe();
                 $nm_instituicao = $det_instituicao["nm_instituicao"];
                 $cidade = $det_instituicao["cidade"];
                 $uf = $det_instituicao["ref_sigla_uf"];
                 $obj_hst_escolar = new clsPmieducarHistoricoEscolar();
                 $lst_hst_escolar = $obj_hst_escolar->lista($this->ref_cod_aluno, null, null, null, $det_curso['nm_curso'], $this->ano_letivo, $carga_horaria_curso, null, null, null, null, null, null, null, null, null, null, null, null, $this->ref_cod_instituicao, 0, 1, $this->ref_cod_matricula);
                 $sql = "SELECT SUM(falta) FROM pmieducar.faltas WHERE ref_cod_matricula = {$this->ref_cod_matricula}";
                 $db5 = new clsBanco();
                 $total_faltas = $db5->CampoUnico($sql);
                 if (is_array($lst_hst_escolar)) {
                     $det_hst_escolar = array_shift($lst_hst_escolar);
                     $obj_hst_escolar = new clsPmieducarHistoricoEscolar($this->ref_cod_aluno, $det_hst_escolar["sequencial"], $this->pessoa_logada, null, $det_curso['nm_curso'], $this->ano_letivo, $carga_horaria_curso, null, $nm_instituicao, $cidade, $uf, null, $aprovado, null, null, 1, $total_faltas, $this->ref_cod_instituicao, 0, 1, $this->ref_cod_matricula);
                     $editou_he = $obj_hst_escolar->edita();
                 } else {
                     $obj_hst_escolar = new clsPmieducarHistoricoEscolar($this->ref_cod_aluno, null, null, $this->pessoa_logada, $det_curso['nm_curso'], $this->ano_letivo, $carga_horaria_curso, null, $nm_instituicao, $cidade, $uf, null, $aprovado, null, null, 1, $total_faltas, $this->ref_cod_instituicao, 0, 1, $this->ref_cod_matricula);
                     $cadastrou_he = $obj_hst_escolar->cadastra();
                 }
                 if (($editou_he || $cadastrou_he) && !$this->conceitual) {
                     if ($cadastrou_he) {
                         $obj_historico = new clsPmieducarHistoricoEscolar();
                         $sequencial = $obj_historico->getMaxSequencial($this->ref_cod_aluno);
                     } else {
                         $sequencial = $det_hst_escolar["sequencial"];
                     }
                     $historico_disciplina = array();
                     foreach ($nota_media_aluno as $key => $nota) {
                         $historico_disciplina[$key] = array($nota, $faltas_media_aluno[$key]);
                     }
                     foreach ($historico_disciplina as $disciplina => $campo) {
                         $obj_disciplina = new clsPmieducarDisciplina($disciplina);
                         $det_disciplina = $obj_disciplina->detalhe();
                         $nm_disciplina = $det_disciplina["nm_disciplina"];
                         $obj_avaliacao_valores = new clsPmieducarTipoAvaliacaoValores();
                         $lst_avaliacao_valores = $obj_avaliacao_valores->lista($this->ref_cod_tipo_avaliacao, null, null, null, $campo[0], $campo[0]);
                         if (is_array($lst_avaliacao_valores)) {
                             $det_avaliacao_valores = array_shift($lst_avaliacao_valores);
                             $nm_nota = $det_avaliacao_valores["nome"];
                             $obj_hd = new clsPmieducarHistoricoDisciplinas();
                             $lst_hd = $obj_hd->lista(null, $this->ref_cod_aluno, $sequencial, $nm_disciplina);
                             if (is_array($lst_hd)) {
                                 $det_hd = array_shift($lst_hd);
                                 $obj_hd = new clsPmieducarHistoricoDisciplinas($det_hd["sequencial"], $this->ref_cod_aluno, $sequencial, $nm_disciplina, $nm_nota, $campo[1]);
                                 $hst_disciplina = $obj_hd->edita();
                             } else {
                                 $obj_hd = new clsPmieducarHistoricoDisciplinas(null, $this->ref_cod_aluno, $sequencial, $nm_disciplina, $nm_nota, $campo[1]);
                                 $hst_disciplina = $obj_hd->cadastra();
                             }
                             if (!$hst_disciplina) {
                                 $this->mensagem = "Cadastro/Edi&ccedil;&atilde;o do Hist&oacute;rico Disciplinas n&atilde;o realizado.<br>";
                                 return false;
                             }
                         } else {
                             $this->mensagem = "N&atilde;o foi poss&iacute;vel encontrar os Valores do Tipo de Avalia&ccedil;&atilde;o.<br>";
                             return false;
                         }
                     }
                 }
                 /*
                 else if( !$editou_he || !$cadastrou_he )
                 {
                 	$this->mensagem = "Cadastro/Edi&ccedil;&atilde;o do Hist&oacute;rico Escolar n&atilde;o realizado.<br>";
                 	return false;
                 }
                 */
             }
             $this->mensagem .= "Cadastro efetuado com sucesso.<br>";
             header("Location: educar_falta_nota_aluno_det.php?ref_cod_matricula={$this->ref_cod_matricula}&ref_cod_turma={$this->ref_cod_turma}&sequencial={$this->ref_sequencial_matricula_turma}");
             die;
             return true;
         }
         $this->mensagem = "Edi&ccedil;&atilde;o n&atilde;o realizada (Matr&iacute;cula).<br>";
         echo "<!--\nErro ao editar clsPmieducarMatricula\nvalores obrigatorios\nis_numeric( {$this->ref_cod_matricula} ) && is_numeric( {$this->pessoa_logada} ) && is_numeric( {$this->modulo} )\n-->";
         return false;
     }
 }
 function Gerar()
 {
     $this->url_cancelar = "educar_turma_mvto_det.php?cod_turma={$this->ref_cod_turma}";
     $this->nome_url_cancelar = "Cancelar";
     // a disciplina vem com a serie junto... vamos separar
     if (strpos($this->ref_cod_disciplina, "_")) {
         $arr = explode("_", $this->ref_cod_disciplina);
         $this->ref_cod_disciplina = $arr[1];
         $this->ref_cod_serie_disciplina = $arr[0];
     } else {
         $this->ref_cod_disciplina = $this->ref_cod_disciplina;
         $this->ref_cod_serie_disciplina = null;
     }
     $objTurma = new clsPmieducarTurma($this->ref_cod_turma, null, null, $this->ref_ref_cod_serie);
     $detalhe_turma = $objTurma->detalhe();
     if ($detalhe_turma) {
         // a turma existe, vamos pegar os dados dela
         $this->ref_ref_cod_serie = $detalhe_turma["ref_ref_cod_serie"];
         $objSerie = new clsPmieducarSerie($this->ref_ref_cod_serie);
         $detalhe_serie = $objSerie->detalhe();
         $this->media_especial = dbBool($detalhe_serie['media_especial']);
         $this->ref_ref_cod_serie_mult = $detalhe_turma["ref_ref_cod_serie_mult"];
         if ($this->ref_ref_cod_serie_mult) {
             $objSerieMult = new clsPmieducarSerie($this->ref_ref_cod_serie_mult);
             $detalhe_serie_mult = $objSerieMult->detalhe();
         }
         $this->ref_ref_cod_escola = $detalhe_turma["ref_ref_cod_escola"];
         $this->ref_cod_curso = $detalhe_serie["ref_cod_curso"];
         $objCurso = new clsPmieducarCurso($this->ref_cod_curso);
         $detalhe_curso = $objCurso->detalhe();
         $objEscolaAnoLetivo = new clsPmieducarEscolaAnoLetivo();
         $lstEscolaAnoLetivo = $objEscolaAnoLetivo->lista($this->ref_ref_cod_escola, null, null, null, 1, null, null, null, null, 1);
         if (is_array($lstEscolaAnoLetivo)) {
             foreach ($lstEscolaAnoLetivo as $value) {
                 $this->ano_letivo = $value["ano"];
             }
         }
         $objTipoAvaliacao = new clsPmieducarTipoAvaliacao($detalhe_curso["ref_cod_tipo_avaliacao"]);
         $detalhe_tipo_avaliacao = $objTipoAvaliacao->detalhe();
         $this->conceitual = $detalhe_tipo_avaliacao["conceitual"];
         $this->ref_cod_tipo_avaliacao = $detalhe_curso["ref_cod_tipo_avaliacao"];
         $this->falta_ch_globalizada = $detalhe_curso["falta_ch_globalizada"];
         $this->num_modulo = $objTurma->moduloMinimo();
         //			se o modulo atual for maior que o maximo o ano acabou
         $this->max_modulos = $objTurma->maxModulos();
         if ($this->num_modulo == $this->max_modulos + 1) {
             // ve se vai para a pagina de aprovacao/reprovacao ou se mostra as notas do exame
             if (!is_null($detalhe_curso["media_exame"])) {
                 // essa turma pode ter exame
                 $detalhe_modulo = array();
                 $detalhe_modulo["nm_tipo"] = "Exame";
                 //					ve se tem algum aluno em exame
                 $a = $objTurma->moduloExameAlunos();
                 if ($objTurma->moduloExameAlunos()) {
                     // existe algum aluno de exame
                     $this->exame = 1;
                     // vamos ver se tem alguma excessao que precisa de nota de exame
                     $objExcessoes = new clsPmieducarMatriculaExcessao();
                     $lista_excessoes = $objExcessoes->lista(null, $this->ref_cod_turma, null, $this->ref_ref_cod_serie, $this->ref_ref_cod_escola, null, true, true, IS_NULL);
                     if (is_array($lista_excessoes)) {
                         // existe alguma excessao, mostra a tela de excessoes
                         $this->passo = 2;
                     } else {
                         // nao tem excessao, entao vamos dar as notas do exame
                         //							$this->passo = 1;
                     }
                 } else {
                     // poderia ter exame, mas nenhum aluno pegou exame, vamos pra aprova��o
                     if ($this->conceitual) {
                         // conceitual aprova manualmente
                         $this->passo = 3;
                     } else {
                         $objExcessoes = new clsPmieducarMatriculaExcessao();
                         $lista_excessoes = $objExcessoes->lista(null, $this->ref_cod_turma, null, $this->ref_ref_cod_serie, $this->ref_ref_cod_escola, null, true, false);
                         if (is_array($lista_excessoes)) {
                             // existe alguma excessao para aprovacao, vamos para tela de excessoes
                             $this->passo = 2;
                         } else {
                             // ninguem de exame, a turma nao eh conceitual e nenhuma excessao... todos ja deveriam estar aprovados/reprovados
                             // $this->campoRotulo("alerta","Alerta","Erro: [1] Todos os alunos dessa turma j� foram aprovados/reprovados.");
                             // vamos corrigir o problema aprovando o pessoal que esta na espera (ja que eles nao pegaram exame nem reprovaram por falta)
                             $db2 = new clsBanco();
                             $db2->Consulta("SELECT cod_matricula FROM pmieducar.v_matricula_matricula_turma WHERE ref_cod_turma = '{$this->ref_cod_turma}' AND aprovado = 3 AND ativo = 1");
                             while ($db2->ProximoRegistro()) {
                                 list($mat) = $db2->Tupla();
                                 $objAprova = new clsPmieducarMatricula($mat, null, null, null, $this->pessoa_logada, null, null, 1);
                                 $objAprova->edita();
                             }
                             header("location: educar_turma_mvto_det.php?cod_turma={$this->ref_cod_turma}");
                             die;
                         }
                     }
                 }
             } else {
                 // nao tem exame, fase de aprovacao dos alunos
                 if ($this->conceitual) {
                     // conceitual aprova manualmente
                     $this->passo = 3;
                 } else {
                     // nao conceitual
                     $objExcessoes = new clsPmieducarMatriculaExcessao();
                     $lista_excessoes = $objExcessoes->lista(null, $this->ref_cod_turma, null, $this->ref_ref_cod_serie, $this->ref_ref_cod_escola, null, true);
                     if (is_array($lista_excessoes)) {
                         // tem excessao, mostra tela de excessoes para aprovacao
                         $this->passo = 2;
                     } else {
                         // ninguem de exame, a turma nao eh conceitual e nenhuma excessao... todos ja deveriam estar aprovados/reprovados
                         // vamos corrigir o problema e aprovar todo mudno que nao pegou exame
                         $db2 = new clsBanco();
                         $db2->Consulta("SELECT cod_matricula FROM pmieducar.v_matricula_matricula_turma WHERE ref_cod_turma = '{$this->ref_cod_turma}' AND aprovado = 3 AND ativo = 1");
                         while ($db2->ProximoRegistro()) {
                             list($mat) = $db2->Tupla();
                             $objAprova = new clsPmieducarMatricula($mat, null, null, null, $this->pessoa_logada, null, null, 1);
                             $objAprova->edita();
                         }
                         //$this->campoRotulo("alerta","Alerta","Erro: [2] Todos os alunos dessa turma j� foram aprovados/reprovados.");
                         header("location: educar_turma_mvto_det.php?cod_turma={$this->ref_cod_turma}");
                         die;
                     }
                 }
             }
         } else {
             if ($this->num_modulo > $this->max_modulos) {
                 // jah passou o exame, fase de aprovacao dos alunos
                 $objExcessoes = new clsPmieducarMatriculaExcessao();
                 $lista_excessoes = $objExcessoes->lista(null, $this->ref_cod_turma, null, $this->ref_ref_cod_serie, $this->ref_ref_cod_escola, null, true);
                 if (is_array($lista_excessoes)) {
                     // ta na fase de aprovacao mas ainda tem alguma excessao
                     $this->passo = 2;
                 } else {
                     // fase de aprovacao e sem excessoes
                     if ($this->conceitual) {
                         $this->passo = 3;
                     } else {
                         // ja acabou o exame, a turma nao eh conceitual e nenhuma excessao... todos ja deveriam estar aprovados/reprovados
                         //						$this->campoRotulo("alerta","Alerta","Erro: [3] Todos os alunos dessa turma j� foram aprovados/reprovados.");
                         $db2 = new clsBanco();
                         $db2->Consulta("SELECT cod_matricula FROM pmieducar.v_matricula_matricula_turma WHERE ref_cod_turma = '{$this->ref_cod_turma}' AND aprovado = 3 AND ativo = 1");
                         while ($db2->ProximoRegistro()) {
                             list($mat) = $db2->Tupla();
                             $objAprova = new clsPmieducarMatricula($mat, null, null, null, $this->pessoa_logada, null, null, 1);
                             $objAprova->edita();
                         }
                         header("location: educar_turma_mvto_det.php?cod_turma={$this->ref_cod_turma}");
                         die;
                     }
                 }
             } else {
                 if ($this->ref_cod_disciplina && $this->passo == 1) {
                     if ($this->ultima_disciplina == 1 && $this->conceitual && $this->num_modulo == $this->max_modulos) {
                         $this->pula_passo = true;
                     }
                 }
                 $this->exame = 0;
                 $cod_modulo = 0;
                 $objAnoLetivoModulo = new clsPmieducarAnoLetivoModulo();
                 $lstAnoLetivoModulo = $objAnoLetivoModulo->lista($this->ano_letivo, $this->ref_ref_cod_escola, $this->num_modulo);
                 if (is_array($lstAnoLetivoModulo)) {
                     foreach ($lstAnoLetivoModulo as $value) {
                         $cod_modulo = $value["ref_cod_modulo"];
                         $this->ref_cod_modulo = $cod_modulo;
                     }
                 }
                 if (!$objTurma->moduloMinimoDisciplina()) {
                     /**
                      * nao existem disciplinas sem nota redireciona para listagem de nota turma
                      */
                     if (!$_POST) {
                         echo "<script>alert('Todas as disciplinas já se encontram com nota!');window.location='educar_turma_mvto_det.php?cod_turma={$this->ref_cod_turma}';</script>";
                     } else {
                         header("location:educar_turma_mvto_det.php?cod_turma={$this->ref_cod_turma}");
                     }
                     die;
                 }
                 $objModulo = new clsPmieducarModulo($cod_modulo);
                 $detalhe_modulo = $objModulo->detalhe();
             }
         }
         $this->campoRotulo("nm_turma", "Turma", $detalhe_turma["nm_turma"]);
         $this->campoRotulo("nm_serie", "S&eacute;rie", $detalhe_turma["multiseriada"] ? "{$detalhe_serie["nm_serie"]} e {$detalhe_serie_mult["nm_serie"]}" : $detalhe_serie["nm_serie"]);
         $this->campoRotulo("nm_modulo", "M&oacute;dulo", $detalhe_modulo["nm_tipo"]);
         $this->campoRotulo("num_modulo2", "N&uacute;mero do M&oacute;dulo", $this->num_modulo . "\n\t\t\t<style>\n\t\t\t\t.cell_normal\n\t\t\t\t{\n\t\t\t\t\tborder:1px;\n\t\t\t\t\tborder-color:#000000;\n\t\t\t\t\tborder-style:solid;\n\t\t\t\t}\n\t\t\t\t.cell_separa\n\t\t\t\t{\n\t\t\t\t\tborder:1px;\n\t\t\t\t\tborder-color:#000000;\n\t\t\t\t\tborder-style:solid;\n\t\t\t\t\tborder-left-width:2px;\n\t\t\t\t}\n\t\t\t</style>\n\t\t\t");
         if ($this->passo == 0) {
             // mostra as disciplinas para escolher
             $opcoes_disciplinas = array("" => "Selecione");
             if (!$this->exame) {
                 // modulo normal, acha todas as disciplinas que ainda precisam de nota no menor modulo
                 $disciplinas = $objTurma->moduloMinimoDisciplina();
                 // print_r($disciplinas);
                 $num_disciplinas = 0;
                 foreach ($disciplinas as $value) {
                     $objDisciplina = new clsPmieducarDisciplina($value["cod_disciplina"]);
                     $det_dis = $objDisciplina->detalhe();
                     $nm_serie = $value["cod_serie"] == $this->ref_ref_cod_serie ? $detalhe_serie["nm_serie"] : $detalhe_serie_mult["nm_serie"];
                     $opcoes_disciplinas["{$value["cod_serie"]}_{$value["cod_disciplina"]}"] = $detalhe_turma["multiseriada"] ? "{$nm_serie} - {$det_dis["nm_disciplina"]}" : "{$det_dis["nm_disciplina"]}";
                     $num_disciplinas++;
                 }
                 if ($num_disciplinas == 1) {
                     $this->campoOculto("ultima_disciplina", 1);
                 }
             } else {
                 // exame, acha as disciplinas em que os alunos nao atingiram a media
                 $disciplinas = $objTurma->moduloExameDisciplina(true);
                 foreach ($disciplinas as $value) {
                     $objDisciplina = new clsPmieducarDisciplina($value["cod_disciplina"]);
                     $det_dis = $objDisciplina->detalhe();
                     $nm_serie = $value["cod_serie"] == $this->ref_ref_cod_serie ? $detalhe_serie["nm_serie"] : $detalhe_serie_mult["nm_serie"];
                     $opcoes_disciplinas["{$value["cod_serie"]}_{$value["cod_disciplina"]}"] = $detalhe_turma["multiseriada"] ? "{$nm_serie} - {$det_dis["nm_disciplina"]}" : "{$det_dis["nm_disciplina"]}";
                 }
             }
             $this->campoLista("ref_cod_disciplina", "Disciplina", $opcoes_disciplinas, $this->ref_cod_disciplina);
         } else {
             if ($this->passo == 1) {
                 // mostra os alunos que ainda precisam de nota nessa disciplina (nesse modulo)
                 $objDisciplina = new clsPmieducarDisciplina($this->ref_cod_disciplina);
                 $detalhe_disciplina = $objDisciplina->detalhe();
                 // print_r($detalhe_disciplina);
                 $this->campoRotulo("disciplina", "Disciplina", "<strong>{$detalhe_disciplina["nm_disciplina"]}</strong>");
                 $this->campoOculto("ref_cod_disciplina", $this->ref_cod_disciplina);
                 $this->campoOculto("ref_cod_serie_disciplina", $this->ref_cod_serie_disciplina);
                 $this->campoQuebra2();
                 // seleciona as notas que estilo disponiveis para essa disciplina
                 $objTipoAvaliacaoValor = new clsPmieducarTipoAvaliacaoValores();
                 $opcoes_notas = array("" => "Selecione");
                 $objTipoAvaliacaoValor->setOrderby("sequencial ASC");
                 $lista_notas_valores = $objTipoAvaliacaoValor->lista($detalhe_curso["ref_cod_tipo_avaliacao"]);
                 if (is_array($lista_notas_valores)) {
                     foreach ($lista_notas_valores as $value) {
                         $opcoes_notas[$value["sequencial"]] = $value["nome"];
                     }
                 }
                 // pega as matriculas que vao receber nota
                 if (!$this->exame) {
                     $matriculas = $objTurma->matriculados_modulo_disciplina_sem_nota($this->ref_cod_disciplina, $this->ref_cod_serie_disciplina, $this->num_modulo);
                     $sql = "SELECT \n\t\t\t\t\t\t\t\tcod_Matricula \n\t\t\t\t\t\t\tFROM\n\t\t\t\t\t\t\t\tpmieducar.matricula m\n\t\t\t\t\t\t\tWHERE \n\t\t\t\t\t\t\t\tcod_matricula in (" . implode(",", $matriculas) . ")\n\t\t\t\t\t\t\t\tAND ref_ref_cod_serie={$this->ref_cod_serie_disciplina}";
                     $banco = new clsBanco();
                     $banco->Consulta($sql);
                     if ($banco->Num_Linhas()) {
                         $matriculas = array();
                         while ($banco->ProximoRegistro()) {
                             list($cod_matricula) = $banco->Tupla();
                             $matriculas[$cod_matricula] = $cod_matricula;
                         }
                     }
                 } else {
                     $matriculas = $objTurma->moduloExameAlunos($this->ref_cod_disciplina);
                     /**
                      * gera campo para dizer que as notas sao de exame
                      */
                     $this->campoOculto("is_nota_exame", true);
                 }
                 if ($matriculas) {
                     $objMat = new clsPmieducarMatricula();
                     $objMat->setOrderby("nome ASC");
                     $lista_matriculas = $objMat->lista(null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, $matriculas);
                     $matriculas_exame_disponivel = false;
                     if (is_array($lista_matriculas)) {
                         foreach ($lista_matriculas as $matricula) {
                             if (!$this->exame) {
                                 $this->campoRotulo("matricula[{$matricula["cod_matricula"]}]", "Aluno", "<div style=\"float:left;width:250px;padding-top:2px;\">{$matricula["nome"]}</div>", true);
                                 $this->campoLista("nota[{$matricula["cod_matricula"]}]", "Nota", $opcoes_notas, "", "", true, "", "", false, true);
                             } else {
                                 $obj_nota_aluno = new clsPmieducarNotaAluno();
                                 $lst_nota_aluno = $obj_nota_aluno->lista(null, null, null, null, null, $this->ref_cod_disciplina, $matricula["cod_matricula"], null, null, null, null, null, null, 1, $this->num_modulo);
                                 if (!is_array($lst_nota_aluno)) {
                                     $matriculas_exame_disponivel = true;
                                     $this->campoRotulo("matricula[{$matricula["cod_matricula"]}]", "Aluno", "<div style=\"float:left;width:250px;padding-top:2px;\">{$matricula["nome"]}</div>", true);
                                     $this->campoMonetario("nota[{$matricula["cod_matricula"]}]", "Nota", "", 5, 5, true, "", "", "onChange", false, true, "", true);
                                 }
                                 //								$this->campoMonetario("nota[{$matricula["cod_matricula"]}]","Nota","",5,5,true,"","","onChange",false,true,"",true);
                             }
                             if (!$this->exame) {
                                 $duplo = false;
                                 if ($this->pula_passo) {
                                     $duplo = true;
                                 }
                                 // nao estamos no exame, vamos ver se precisa apurar as faltas
                                 if ($detalhe_disciplina["apura_falta"]) {
                                     // materia apura falta, vamos ver se eh pra mostrar pra esse aluno
                                     if (!$detalhe_curso["falta_ch_globalizada"]) {
                                         // se nesse curso a falta nao eh globalizada, exibe um campo de falta para todos os alunos
                                         $this->campoTexto("falta[{$matricula["cod_matricula"]}]", " &nbsp; &nbsp; &nbsp; Faltas", "0", 7, 5, true, false, $duplo);
                                     } else {
                                         // a falta eh globalizada, vamos ver se essa eh a ultima materia (que apura falta) que falta pro aluno
                                         // receber nota. Se for a ultima mostra o campo, se nao for deixa sem
                                         $objNotaAluno = new clsPmieducarNotaAluno();
                                         $restantes = $objNotaAluno->getQtdRestanteNotasAlunoNaoApuraFaltas($matricula["cod_matricula"], $this->ref_cod_serie_disciplina, $this->ref_cod_turma, $this->num_modulo, $this->ref_ref_cod_escola);
                                         if ($restantes == 1) {
                                             $this->campoTexto("falta[{$matricula["cod_matricula"]}]", " &nbsp; &nbsp; &nbsp; Faltas", "0", 7, 5, true, false, $duplo, "", "Falta global!");
                                             $this->campoOculto("ultima_nota[{$matricula["cod_matricula"]}]", "1");
                                         } else {
                                             $this->campoRotulo("espaco[{$matricula["cod_matricula"]}]", " &nbsp; &nbsp; &nbsp; Faltas", "Falta Globalizada &eacute; aplicada na ultima nota do aluno");
                                         }
                                     }
                                 } else {
                                     // a falta eh globalizada, vamos ver se essa eh a ultima materia (que apura falta) que falta pro aluno
                                     // receber nota. Se for a ultima mostra o campo, se nao for deixa sem
                                     if ($detalhe_curso["falta_ch_globalizada"]) {
                                         $objNotaAluno = new clsPmieducarNotaAluno();
                                         $restantes = $objNotaAluno->getQtdRestanteNotasAlunoNaoApuraFaltas($matricula["cod_matricula"], $this->ref_cod_serie_disciplina, $this->ref_cod_turma, $this->num_modulo, $this->ref_ref_cod_escola);
                                         if ($restantes == 1) {
                                             // eh a ultima disciplina
                                             $this->campoTexto("falta[{$matricula["cod_matricula"]}]", " &nbsp; &nbsp; &nbsp; Faltas", "0", 7, 5, true, false, $duplo, "", "Falta global!");
                                             $this->campoOculto("ultima_nota[{$matricula["cod_matricula"]}]", "1");
                                         } else {
                                             $this->campoRotulo("espaco[{$matricula["cod_matricula"]}]", " &nbsp; &nbsp; &nbsp; Faltas", "Mat&eacute;ria n&atilde;o apura falta");
                                         }
                                     } else {
                                         $this->campoRotulo("espaco[{$matricula["cod_matricula"]}]", " &nbsp; &nbsp; &nbsp; Faltas", "Mat&eacute;ria n&atilde;o apura falta");
                                     }
                                 }
                                 if ($this->pula_passo) {
                                     //									$opcoes_conceito = array("" => "Selecione", 1 => "Aprovado", 2 => "Reprovado");
                                     //									$this->campoLista("conceito[{$matricula["cod_matricula"]}]", " &nbsp; &nbsp; &nbsp; Situação", $opcoes_conceito, "");
                                     $this->campoLista("resultado_final[{$matricula["cod_matricula"]}]", "&nbsp; &nbsp; &nbsp;Resultado final", array("" => "Selecione", "1" => "Aprovado", "2" => "Reprovado"), "", "", false, "", "", false, true);
                                 }
                             } else {
                                 if (!is_array($lst_nota_aluno)) {
                                     // esta no exame, entao nao apura faltas
                                     $this->campoRotulo("espaco[{$matricula["cod_matricula"]}]", " &nbsp; &nbsp; &nbsp; Faltas", "Exame n&atilde;o apura falta");
                                 }
                                 // esta no exame, entao nao apura faltas
                                 //								$this->campoRotulo("espaco[{$matricula["cod_matricula"]}]", " &nbsp; &nbsp; &nbsp; Faltas","Exame n&atilde;o apura falta");
                             }
                         }
                         if (!$matriculas_exame_disponivel && $this->exame) {
                             echo "<script>\n\t\t\t\t\t\t\t\t\t\talert('Todos os alunos estão com notas do exame nessa disciplina');\n\t\t\t\t\t\t\t\t\t\twindow.location='educar_turma_nota_cad.php?ref_cod_turma={$this->ref_cod_turma}&ref_ref_cod_escola={$this->ref_ref_cod_escola}&ref_ref_cod_serie={$this->ref_ref_cod_serie}&ref_cod_curso={$this->ref_cod_curso}';\n\t\t\t\t\t\t\t\t  </script>";
                         }
                     }
                 } else {
                     $this->mensagem = "Neste m&oacute;dulo n&atilde;o existe nenhum aluno aguardando uma nota nesta disciplina";
                     $this->url_cancelar = "educar_turma_nota_cad2.php?ref_cod_turma={$this->ref_cod_turma}&ref_ref_cod_escola={$this->ref_ref_cod_escola}&ref_ref_cod_serie={$this->ref_ref_cod_serie}&ref_cod_curso={$this->ref_cod_curso}";
                     $this->nome_url_cancelar = "Voltar";
                     $this->botao_enviar = false;
                 }
             } else {
                 if ($this->passo == 2) {
                     // tela onde o professor confirma excessoes
                     $objTipoAvaliacaoValor = new clsPmieducarTipoAvaliacaoValores();
                     $this->campoQuebra2();
                     $this->campoRotulo("media_normal", "M&eacute;dia", $objTipoAvaliacaoValor->nomeNota($detalhe_curso["media"], $detalhe_curso["ref_cod_tipo_avaliacao"]));
                     $this->campoRotulo("media_exame", "M&eacute;dia Exame", $objTipoAvaliacaoValor->nomeNota($detalhe_curso["media_exame"], $detalhe_curso["ref_cod_tipo_avaliacao"]));
                     if ($detalhe_curso["falta_ch_globalizada"]) {
                         $tipo_falta = "Globalizada";
                     } else {
                         $tipo_falta = "por Disciplina";
                     }
                     $this->campoRotulo("tipo_falta", "Tipo de Falta", $tipo_falta);
                     $this->campoRotulo("carga_horaria", "Carga Hor&aacute;ria", $detalhe_curso["carga_horaria"]);
                     $this->campoRotulo("hora_falta", "Horas por Falta", $detalhe_curso["hora_falta"]);
                     $this->campoRotulo("frequencia_minima1", "Frequencia M&aacute;ima (%)", $detalhe_curso["frequencia_minima"] . "%");
                     $this->campoRotulo("frequencia_minima2", "Frequencia M&iacute;nima (Horas)", ceil($detalhe_curso["frequencia_minima"] / 100 * $detalhe_curso["carga_horaria"]));
                     if ($detalhe_curso["hora_falta"]) {
                         $maximo_faltas = floor($detalhe_curso["carga_horaria"] / $detalhe_curso["hora_falta"] - $detalhe_curso["frequencia_minima"] / 100 * $detalhe_curso["carga_horaria"] / $detalhe_curso["hora_falta"]);
                     } else {
                         $maximo_faltas = "Ilimitado";
                     }
                     $this->campoRotulo("frequencia_minima3", "M&aacute;ximo de faltas (quantidade)", $maximo_faltas);
                     // descobre o ano letivo em andamento
                     $objEscolaAnoLetivo = new clsPmieducarEscolaAnoLetivo();
                     $objEscolaAnoLetivo->setOrderby("data_cadastro DESC");
                     $objEscolaAnoLetivo->setLimite(1);
                     $lista_anoletivo = $objEscolaAnoLetivo->lista($this->ref_ref_cod_escola, null, null, null, 1);
                     if (is_array($lista_anoletivo)) {
                         foreach ($lista_anoletivo as $value) {
                             $ano = $value["ano"];
                         }
                     }
                     $boletim = false;
                     $descricao = "";
                     $objExcessoes = new clsPmieducarMatriculaExcessao();
                     $lista_excessoes = $objExcessoes->lista(null, $this->ref_cod_turma, null, $this->ref_ref_cod_serie, $this->ref_ref_cod_escola, null, true, true, IS_NULL);
                     if (is_array($lista_excessoes)) {
                         $this->campoQuebra2();
                         $this->campoRotulo("descricao", "Aviso", "Existem alunos que reprovaram por falta e pegaram exame.<br>Você deve decidir se permitirá que eles façam exame ou reprovem.");
                         $opcoes_excessao = array("" => "Selecione", "0" => "Reprovar", "1" => "Permitir Exame");
                         // ainda tem alguma excessao que precisa de exame
                         foreach ($lista_excessoes as $excessao) {
                             $this->campoQuebra2();
                             $this->campoQuebra2("#E4E9ED", 20);
                             $objMatricula = new clsPmieducarMatricula($excessao["ref_cod_matricula"]);
                             $detalhe_matricula = $objMatricula->detalhe();
                             $this->campoRotulo("nome[{$excessao["ref_cod_matricula"]}]", "Aluno", "{$detalhe_matricula["nome"]}");
                             // boletim
                             $boletim = $this->getBoletimAluno($excessao["ref_cod_matricula"], $ano);
                             $this->campoRotulo("boletim[{$excessao["cod_aluno_excessao"]}]", "Boletim", $boletim["boletim"]);
                             $this->campoLista("excessao[{$excessao["cod_aluno_excessao"]}]", "Resultado final", $opcoes_excessao, false, "", false, "", "", false, false);
                             $this->campoRotulo("sugestao[{$excessao["cod_aluno_excessao"]}]", "Autom&aacute;tico", $boletim["automatico"]);
                             $this->campoQuebra2("#FFFFFF", 20);
                         }
                     } else {
                         $lista_excessoes = $objExcessoes->lista(null, $this->ref_cod_turma, null, $this->ref_ref_cod_serie, $this->ref_ref_cod_escola, null, true, false);
                         if (is_array($lista_excessoes)) {
                             $this->campoQuebra2();
                             $this->campoRotulo("descricao", "Aviso", "Existem alunos que reprovaram por falta mas foram aprovados em notas.<br>Você deve decidir se eles ser�o aprovados ou reprovados.");
                             $opcoes_excessao = array("" => "Selecione", "0" => "Reprovar", "2" => "Aprovar");
                             // so existem excessoes para aprovacao direta
                             foreach ($lista_excessoes as $excessao) {
                                 $this->campoQuebra2();
                                 $this->campoQuebra2("#E4E9ED", 20);
                                 $objMatricula = new clsPmieducarMatricula($excessao["ref_cod_matricula"]);
                                 $detalhe_matricula = $objMatricula->detalhe();
                                 $this->campoRotulo("nome[{$excessao["ref_cod_matricula"]}]", "Aluno", "{$detalhe_matricula["nome"]}");
                                 // boletim
                                 $boletim = $this->getBoletimAluno($excessao["ref_cod_matricula"], $ano);
                                 $this->campoRotulo("boletim[{$excessao["cod_aluno_excessao"]}]", "Boletim", $boletim["boletim"]);
                                 $this->campoLista("excessao[{$excessao["cod_aluno_excessao"]}]", "Resultado final", $opcoes_excessao, false, "", false, "", "", false, false);
                                 $this->campoRotulo("sugestao[{$excessao["cod_aluno_excessao"]}]", "Autom&aacute;tico", $boletim["automatico"]);
                                 $this->campoQuebra2("#FFFFFF", 20);
                             }
                         } else {
                             // por algum motivo ele mandou o cara pra tela de excessoes, mas nao existe nenhuma excessao
                             $this->campoRotulo("alerta", "Alerta", "Erro: [4] Nenhum aluno reprovado por faltas pendente.");
                             //						header("location: educar_turma_mvto_det.php?cod_turma={$this->ref_cod_turma}");
                             //						die();
                         }
                     }
                 } else {
                     if ($this->passo == 3) {
                         // vamos exibir alguns dados extras sobre o curso (padroes de aprovacao / reprovacao)
                         $this->campoQuebra2();
                         $objTipoAvaliacaoValor = new clsPmieducarTipoAvaliacaoValores();
                         $this->campoRotulo("media_normal", "M&eacute;dia", $objTipoAvaliacaoValor->nomeNota($detalhe_curso["media"], $detalhe_curso["ref_cod_tipo_avaliacao"]));
                         $this->campoRotulo("media_exame", "M&eacute;dia Exame", $objTipoAvaliacaoValor->nomeNota($detalhe_curso["media_exame"], $detalhe_curso["ref_cod_tipo_avaliacao"]));
                         if ($detalhe_curso["falta_ch_globalizada"]) {
                             $tipo_falta = "Globalizada";
                         } else {
                             $tipo_falta = "por Disciplina";
                         }
                         $this->campoRotulo("tipo_falta", "Tipo de Falta", $tipo_falta);
                         $this->campoRotulo("carga_horaria", "Carga Hor&aacute;ria", $detalhe_curso["carga_horaria"]);
                         $this->campoRotulo("hora_falta", "Horas por Falta", $detalhe_curso["hora_falta"]);
                         $this->campoRotulo("frequencia_minima1", "Frequencia M&iacute;nima (%)", $detalhe_curso["frequencia_minima"] . "%");
                         $this->campoRotulo("frequencia_minima2", "Frequencia M&iacute;nima (Horas)", ceil($detalhe_curso["frequencia_minima"] / 100 * $detalhe_curso["carga_horaria"]));
                         if ($detalhe_curso["hora_falta"]) {
                             $maximo_faltas = floor($detalhe_curso["carga_horaria"] / $detalhe_curso["hora_falta"] - $detalhe_curso["frequencia_minima"] / 100 * $detalhe_curso["carga_horaria"] / $detalhe_curso["hora_falta"]);
                         } else {
                             $maximo_faltas = "Ilimitado";
                         }
                         $this->campoRotulo("frequencia_minima3", "M&aacute;ximo de faltas (quantidade)", $maximo_faltas);
                         //				mostra a lista de todos alunos e a opcao de aprovar/reprovar (exceto os ja aprovados/reprovados)
                         $matriculas = $objTurma->matriculados();
                         if ($matriculas) {
                             // descobre o ano letivo em andamento
                             $objEscolaAnoLetivo = new clsPmieducarEscolaAnoLetivo();
                             $objEscolaAnoLetivo->setOrderby("data_cadastro DESC");
                             $objEscolaAnoLetivo->setLimite(1);
                             $lista_anoletivo = $objEscolaAnoLetivo->lista($this->ref_ref_cod_escola, null, null, null, 1);
                             if (is_array($lista_anoletivo)) {
                                 foreach ($lista_anoletivo as $value) {
                                     $ano = $value["ano"];
                                 }
                             }
                             $objMat = new clsPmieducarMatricula();
                             $objMat->setOrderby("nome ASC");
                             $lista_matriculas = $objMat->lista(null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, $matriculas);
                             if (is_array($lista_matriculas)) {
                                 foreach ($lista_matriculas as $matricula) {
                                     $this->campoQuebra2();
                                     $this->campoQuebra2("#E4E9ED", 20);
                                     $this->campoRotulo("nome[{$matricula["cod_matricula"]}]", "Aluno", "{$matricula["nome"]}");
                                     // boletim
                                     $boletim = $this->getBoletimAluno($matricula["cod_matricula"], $ano);
                                     $this->campoRotulo("boletim[{$matricula["cod_matricula"]}]", "Boletim", $boletim["boletim"]);
                                     $this->campoRotulo("sugestao[{$matricula["cod_matricula"]}]", "Autom&aacute;tico", $boletim["automatico"]);
                                     //							if ($this->pula_passo)
                                     //								$this->campoLista("resultado_final[{$matricula["cod_matricula"]}]","Resultado final",array(""=>"Selecione","1"=>"Aprovado","2"=>"Reprovado"),"","",false,"","",false,true);
                                     //							else
                                     $this->campoLista("resultado_final[{$matricula["cod_matricula"]}]", "Resultado final", array("" => "Selecione", "1" => "Aprovado", "2" => "Reprovado"), "", "", false, "", "", false, false);
                                     $this->campoQuebra2("#FFFFFF", 20);
                                 }
                             }
                         } else {
                             $this->mensagem = "Erro ao procurar alunos sem nota nessa disciplina";
                         }
                     }
                 }
             }
         }
         //			guardando dados para os outros passos
         if ($this->pula_passo) {
             $this->campoOculto("passo", 3);
             $this->campoOculto("pula_passo", 1);
             $this->campoOculto("ref_cod_tipo_avaliacao", $this->ref_cod_tipo_avaliacao);
             //				$this->pula_passo = false;
         } else {
             $this->campoOculto("passo", $this->passo + 1);
         }
         $this->campoOculto("ref_cod_turma", $this->ref_cod_turma);
         $this->campoOculto("ref_ref_cod_escola", $this->ref_ref_cod_escola);
         $this->campoOculto("ref_ref_cod_serie", $this->ref_ref_cod_serie);
         $this->campoOculto("ref_cod_curso", $this->ref_cod_curso);
         $this->campoOculto("falta_ch_globalizada", $this->falta_ch_globalizada);
         $this->campoOculto("num_modulo", $this->num_modulo);
         $this->campoOculto("max_modulos", $this->max_modulos);
         $this->campoOculto("exame", $this->exame);
     } else {
         $this->campoRotulo("erro", "Erro", "Turma inexistente");
         return false;
     }
     return true;
 }