function Novo()
 {
     @session_start();
     $this->pessoa_logada = $_SESSION['id_pessoa'];
     @session_write_close();
     $obj_permissoes = new clsPermissoes();
     $obj_permissoes->permissao_cadastra(578, $this->pessoa_logada, 7, 'educar_dispensa_disciplina_lst.php?ref_cod_matricula=' . $this->ref_cod_matricula);
     $sql = 'SELECT MAX(cod_dispensa) + 1 FROM pmieducar.dispensa_disciplina';
     $db = new clsBanco();
     $max_cod_dispensa = $db->CampoUnico($sql);
     // Caso não exista nenhuma dispensa, atribui o código 1, tabela não utiliza sequences
     $max_cod_dispensa = $max_cod_dispensa > 0 ? $max_cod_dispensa : 1;
     $obj = new clsPmieducarDispensaDisciplina($this->ref_cod_matricula, $this->ref_cod_serie, $this->ref_cod_escola, $this->ref_cod_disciplina, NULL, $this->pessoa_logada, $this->ref_cod_tipo_dispensa, NULL, NULL, 1, $this->observacao, $max_cod_dispensa);
     if ($obj->existe()) {
         $obj = new clsPmieducarDispensaDisciplina($this->ref_cod_matricula, $this->ref_cod_serie, $this->ref_cod_escola, $this->ref_cod_disciplina, $this->pessoa_logada, NULL, $this->ref_cod_tipo_dispensa, NULL, NULL, 1, $this->observacao);
         $obj->edita();
         header('Location: educar_dispensa_disciplina_lst.php?ref_cod_matricula=' . $this->ref_cod_matricula);
         die;
     }
     $cadastrou = $obj->cadastra();
     if ($cadastrou) {
         $this->mensagem .= 'Cadastro efetuado com sucesso.<br />';
         header('Location: educar_dispensa_disciplina_lst.php?ref_cod_matricula=' . $this->ref_cod_matricula);
         die;
     }
     $this->mensagem = 'Cadastro não realizado.<br />';
     echo "<!--\nErro ao cadastrar clsPmieducarDispensaDisciplina\nvalores obrigatorios\n is_numeric( {$this->ref_cod_matricula} ) && is_numeric( {$this->ref_cod_serie} ) && is_numeric( {$this->ref_cod_escola} ) && is_numeric( {$this->ref_cod_disciplina} ) && is_numeric( {$this->pessoa_logada} ) && is_numeric( {$this->ref_cod_tipo_dispensa} )\n-->";
     return FALSE;
 }
 /**
  * Cria um boletim em HTML para a matricula $matricula
  *
  * @param int $matricula
  * @return array
  */
 function getBoletimAluno($matricula, $ano)
 {
     $media = false;
     $reprovado = 0;
     $falta_globalizada = 0;
     $array_status = array("Aprovado", "Reprovado", "Reprovado por faltas");
     $objCurso = new clsPmieducarCurso($this->ref_cod_curso);
     $detalhe_curso = $objCurso->detalhe();
     // monta o boletim do aluno
     $cor = array("#ffffff", "#dce6f1");
     $corDest = array("#e1c9c9", "#efe7e7");
     $boletim = "\n\t\t<table border=\"0\" cellpadding=\"2\" cellspacing=\"0\" style=\"border-width:2px;color#00000;border-style:solid;\">\n\t\t\t<tr bgcolor=\"#ffffff\">\n\t\t\t\t<td rowspan=\"2\" class=\"cell_normal\" align=\"center\">Disciplina</td>\n\t\t";
     $linha2 = "<tr bgcolor=\"#ffffff\">";
     $objTurmaModulo = new clsPmieducarAnoLetivoModulo();
     $objTurmaModulo->setOrderby("sequencial ASC");
     $lista_modulos = $objTurmaModulo->lista($ano, $this->ref_ref_cod_escola);
     if (is_array($lista_modulos)) {
         foreach ($lista_modulos as $modulo) {
             $objModulo = new clsPmieducarModulo($modulo["ref_cod_modulo"]);
             $detModulo = $objModulo->detalhe();
             $boletim .= "<td colspan=\"2\" class=\"cell_separa\" align=\"center\">{$detModulo["nm_tipo"]}</td>";
             $linha2 .= "\n\t\t\t\t<td class=\"cell_separa\" align=\"center\" width=\"40\">Nota</td>\n\t\t\t\t<td class=\"cell_normal\" align=\"center\" width=\"40\">Faltas</td>\n\t\t\t\t";
         }
     }
     if (!is_null($detalhe_curso["media_exame"])) {
         $boletim .= "<td class=\"cell_separa\" align=\"center\">Exame</td>";
         $linha2 .= "<td class=\"cell_separa\" align=\"center\">Nota</td>";
     }
     $boletim .= "<td colspan=\"2\" class=\"cell_separa\" align=\"center\">Resultado</td>\n\t\t</tr>\n\t\t";
     $linha2 .= "<td class=\"cell_separa\" align=\"center\" width=\"40\">Media</td><td class=\"cell_normal\" align=\"center\" width=\"40\">Faltas</td></tr>";
     $boletim .= $linha2;
     $i = 0;
     $objDisciplinaSerie = new clsPmieducarDisciplinaSerie();
     $lstDisciplinas = $objDisciplinaSerie->lista(null, $this->ref_ref_cod_serie, 1);
     foreach ($lstDisciplinas as $disciplina) {
         $i++;
         $faltas_total = 0;
         $notas_total = 0;
         $objDispensa = new clsPmieducarDispensaDisciplina($matricula, $disciplina["ref_cod_serie"], $this->ref_ref_cod_escola, $disciplina["ref_cod_disciplina"]);
         $dispensa = $objDispensa->existe();
         $objDisciplina = new clsPmieducarDisciplina($disciplina["ref_cod_disciplina"]);
         $detDisciplina = $objDisciplina->detalhe();
         $boletim .= "\n\t\t\t<tr>\n\t\t\t\t<td bgcolor=\"" . $cor[$i % 2] . "\"  class=\"cell_normal\">{$detDisciplina["nm_disciplina"]}</td>\n\t\t\t";
         if (is_array($lista_modulos)) {
             reset($lista_modulos);
             foreach ($lista_modulos as $modulo) {
                 if ($dispensa) {
                     $boletim .= "\n\t\t\t\t\t\t<td bgcolor=\"" . $cor[$i % 2] . "\" class=\"cell_separa\" colspan=\"2\" align=\"center\">dispensa</td>\n\t\t\t\t\t\t";
                 } else {
                     // pegando a falta desse modulo
                     $faltas = 0;
                     $objFaltaAluno = new clsPmieducarFaltaAluno();
                     $objFaltaAluno->setOrderby("data_cadastro DESC");
                     $objFaltaAluno->setLimite(1);
                     $lista_faltas = $objFaltaAluno->lista(null, null, null, $disciplina["ref_cod_serie"], $this->ref_ref_cod_escola, $disciplina["ref_cod_disciplina"], $matricula, null, null, null, null, null, 1, $modulo["sequencial"]);
                     if (is_array($lista_faltas)) {
                         foreach ($lista_faltas as $falta_modulo) {
                             $faltas = $falta_modulo["faltas"];
                         }
                     }
                     $nota = null;
                     $objNotaAluno = new clsPmieducarNotaAluno();
                     $objNotaAluno->setOrderby("data_cadastro DESC");
                     $objNotaAluno->setLimite(1);
                     //						echo "<br><br><br>null,null,null,{$this->ref_ref_cod_serie},{$this->ref_ref_cod_escola},{$disciplina["ref_cod_disciplina"]},{$matricula},null,null,null,null,null,1,{$modulo["sequencial"]}\n<br>\n";
                     $lista_notas = $objNotaAluno->lista(null, null, null, $disciplina["ref_cod_serie"], $this->ref_ref_cod_escola, $disciplina["ref_cod_disciplina"], $matricula, null, null, null, null, null, null, 1, $modulo["sequencial"]);
                     //						print_r($lista_notas);
                     //						echo "<br>";
                     if (is_array($lista_notas)) {
                         foreach ($lista_notas as $nota_modulo) {
                             $objNotaValor = new clsPmieducarTipoAvaliacaoValores($nota_modulo["ref_ref_cod_tipo_avaliacao"], $nota_modulo["ref_sequencial"]);
                             //								echo "{$nota_modulo["ref_ref_cod_tipo_avaliacao"]},{$nota_modulo["ref_sequencial"]}\n<br>\n";
                             $det_nota_valor = $objNotaValor->detalhe();
                             $nota = $det_nota_valor["nome"];
                             $notas_total += $det_nota_valor["valor"];
                         }
                         unset($lista_notas);
                     }
                     $nota = $nota ? $nota : "&nbsp;";
                     $faltas = $faltas ? $faltas : 0;
                     $faltas_total += $faltas;
                     $boletim .= "\n\t\t\t\t\t\t<td bgcolor=\"" . $cor[$i % 2] . "\" class=\"cell_separa\">{$nota}</td>\n\t\t\t\t\t\t<td bgcolor=\"" . $cor[$i % 2] . "\" class=\"cell_normal\">{$faltas}</td>\n\t\t\t\t\t\t";
                 }
             }
             $media = $notas_total / count($lista_modulos);
             $media_aprovacao = $detalhe_curso["media"];
             if (!is_null($detalhe_curso["media_exame"])) {
                 // o curso tem exame
                 if ($dispensa) {
                     $boletim .= "\n\t\t\t\t\t\t<td bgcolor=\"" . $cor[$i % 2] . "\" class=\"cell_separa\" align=\"center\">dispensa</td>\n\t\t\t\t\t\t";
                 } else {
                     // echo count($lista_modulos);
                     $objNotaAluno = new clsPmieducarNotaAluno();
                     $objNotaAluno->setLimite(1);
                     $objNotaAluno->setOrderby("data_cadastro DESC");
                     $listaNotas = $objNotaAluno->lista(null, null, null, $disciplina["ref_cod_serie"], null, $disciplina["ref_cod_disciplina"], $matricula, null, null, null, null, null, null, null, count($lista_modulos) + 1);
                     if ($listaNotas) {
                         // ja recebeu a nota do exame
                         foreach ($listaNotas as $nota_exame) {
                             $objNotaValor = new clsPmieducarTipoAvaliacaoValores($nota_exame["ref_ref_cod_tipo_avaliacao"], $nota_exame["ref_sequencial"]);
                             $detNotaValor = $objNotaValor->detalhe();
                             $nota_exame = $detNotaValor["nome"];
                             // print_r($detNotaValor);
                             $notas_total += $detNotaValor["valor"];
                             $nota_exame = $nota_exame ? $nota_exame : "-";
                             $boletim .= "<td bgcolor=\"" . $cor[$i % 2] . "\" class=\"cell_separa\">{$nota_exame}</td>";
                         }
                         $media = $notas_total / (count($lista_modulos) + 1);
                         $media_aprovacao = $detalhe_curso["media_exame"];
                     } else {
                         $nota_exame = $nota_exame ? $nota_exame : "-";
                         $boletim .= "<td bgcolor=\"" . $cor[$i % 2] . "\" class=\"cell_separa\">-</td>";
                     }
                 }
             }
             if ($media !== false) {
                 $objNotaValor = new clsPmieducarTipoAvaliacaoValores();
                 $objNotaValor->setLimite(1);
                 $objNotaValor->setOrderby("valor DESC");
                 $notas_media = $objNotaValor->lista($detalhe_curso["ref_cod_tipo_avaliacao"], null, null, null, $media, $media);
                 foreach ($notas_media as $nota_media) {
                     $media = $nota_media["nome"];
                     if ($nota_media["valor"] < $media_aprovacao) {
                         $reprovado = 1;
                     }
                 }
             } else {
                 $media = "&nbsp;";
             }
             if ($dispensa) {
                 $boletim .= "\n\t\t\t\t\t<td bgcolor=\"" . $cor[$i % 2] . "\" class=\"cell_separa\" colspan=\"2\" align=\"center\">dispensa</td>\n\t\t\t\t\t";
             } else {
                 $boletim .= "\n\t\t\t\t\t<td bgcolor=\"" . $cor[$i % 2] . "\" class=\"cell_separa\">{$media}</td>\n\t\t\t\t\t<td bgcolor=\"" . $cor[$i % 2] . "\"  class=\"cell_normal\">{$faltas_total}</td>\n\t\t\t\t\t";
             }
         }
         if (!$detalhe_curso["falta_ch_globalizada"] && $maximo_faltas != "Ilimitado") {
             if ($faltas_total > $maximo_faltas) {
                 $reprovado = 2;
             }
         }
         $falta_globalizada += $faltas_total;
     }
     if ($detalhe_curso["falta_ch_globalizada"] && $maximo_faltas != "Ilimitado") {
         if ($falta_globalizada > $maximo_faltas) {
             $reprovado = 2;
         }
     }
     $boletim .= "</table>";
     return array("boletim" => $boletim, "automatico" => $array_status[$reprovado]);
 }