function Gerar()
 {
     @session_start();
     $this->pessoa_logada = $_SESSION['id_pessoa'];
     session_write_close();
     $this->titulo = "Faltas/Notas Aluno - Detalhe";
     $this->addBanner("imagens/nvp_top_intranet.jpg", "imagens/nvp_vert_intranet.jpg", "Intranet");
     $this->ref_cod_matricula = $_GET["ref_cod_matricula"];
     $this->ref_cod_turma = $_GET["ref_cod_turma"];
     $this->ref_sequencial_matricula_turma = $_GET["sequencial"];
     $obj_matricula_turma = new clsPmieducarMatriculaTurma();
     //		echo $this->ref_cod_matricula." ".$this->ref_cod_turma;
     $lst_matricula_turma = $obj_matricula_turma->lista($this->ref_cod_matricula, $this->ref_cod_turma, null, null, null, null, null, null, 1, null, null, null, null, null, null, null, null, $this->ref_sequencial_matricula_turma);
     if (is_array($lst_matricula_turma)) {
         $registro = array_shift($lst_matricula_turma);
     }
     if (!$registro) {
         header("location: educar_falta_nota_aluno_lst.php");
         die;
     }
     if (class_exists("clsPmieducarTurma")) {
         $obj_ref_ref_cod_turma = new clsPmieducarTurma($registro["ref_cod_turma"]);
         $det_ref_ref_cod_turma = $obj_ref_ref_cod_turma->detalhe();
         $nm_turma = $det_ref_ref_cod_turma["nm_turma"];
     } else {
         $registro["ref_cod_turma"] = "Erro na geracao";
         echo "<!--\nErro\nClasse nao existente: clsPmieducarTurma\n-->";
     }
     if (class_exists("clsPmieducarSerie")) {
         $obj_ref_cod_serie = new clsPmieducarSerie($registro["ref_ref_cod_serie"]);
         $det_ref_cod_serie = $obj_ref_cod_serie->detalhe();
         $nm_serie = $det_ref_cod_serie["nm_serie"];
     } else {
         $registro["ref_cod_serie"] = "Erro na geracao";
         echo "<!--\nErro\nClasse nao existente: clsPmieducarSerie\n-->";
     }
     if (class_exists("clsPmieducarCurso")) {
         $obj_ref_cod_curso = new clsPmieducarCurso($registro["ref_cod_curso"]);
         $det_ref_cod_curso = $obj_ref_cod_curso->detalhe();
         $nm_curso = $det_ref_cod_curso["nm_curso"];
         $padrao_ano_escolar = $det_ref_cod_curso["padrao_ano_escolar"];
         $falta_ch_globalizada = $det_ref_cod_curso["falta_ch_globalizada"];
         if ($padrao_ano_escolar) {
             $obj_ano_letivo = new clsPmieducarEscolaAnoLetivo();
             $lst_ano_letivo = $obj_ano_letivo->lista($registro["ref_ref_cod_escola"], null, null, null, 1, null, null, null, null, 1);
             if (is_array($lst_ano_letivo)) {
                 $det_ano_letivo = array_shift($lst_ano_letivo);
                 $ano_letivo = $det_ano_letivo["ano"];
                 $obj_ano_letivo_modulo = new clsPmieducarAnoLetivoModulo();
                 $lst_ano_letivo_modulo = $obj_ano_letivo_modulo->lista($ano_letivo, $registro["ref_ref_cod_escola"]);
                 if (is_array($lst_ano_letivo_modulo)) {
                     $qtd_modulos = count($lst_ano_letivo_modulo);
                 }
             }
         } else {
             $obj_turma_modulo = new clsPmieducarTurmaModulo();
             $lst_turma_modulo = $obj_turma_modulo->lista($registro["ref_cod_turma"]);
             if (is_array($lst_turma_modulo)) {
                 $qtd_modulos = count($lst_turma_modulo);
             }
         }
     } else {
         $registro["ref_cod_curso"] = "Erro na geracao";
         echo "<!--\nErro\nClasse nao existente: clsPmieducarCurso\n-->";
     }
     if (class_exists("clsPmieducarInstituicao")) {
         $obj_cod_instituicao = new clsPmieducarInstituicao($registro["ref_cod_instituicao"]);
         $obj_cod_instituicao_det = $obj_cod_instituicao->detalhe();
         $registro["ref_cod_instituicao"] = $obj_cod_instituicao_det["nm_instituicao"];
     } else {
         $registro["ref_cod_instituicao"] = "Erro na gera&ccedil;&atilde;o";
         echo "<!--\nErro\nClasse n&atilde;o existente: clsPmieducarInstituicao\n-->";
     }
     if (class_exists("clsPmieducarEscola")) {
         $obj_ref_cod_escola = new clsPmieducarEscola($registro["ref_ref_cod_escola"]);
         $det_ref_cod_escola = $obj_ref_cod_escola->detalhe();
         $nm_escola = $det_ref_cod_escola["nome"];
     } else {
         $registro["ref_ref_cod_escola"] = "Erro na gera&ccedil;&atilde;o";
         echo "<!--\nErro\nClasse n&atilde;o existente: clsPmieducarEscola\n-->";
     }
     if (class_exists("clsPmieducarAluno")) {
         $obj_aluno = new clsPmieducarAluno();
         $lst_aluno = $obj_aluno->lista($registro["ref_cod_aluno"], null, null, null, null, null, null, null, null, null, 1);
         if (is_array($lst_aluno)) {
             $det_aluno = array_shift($lst_aluno);
             $registro["ref_cod_aluno"] = $det_aluno["nome_aluno"];
         }
     } else {
         $registro["ref_cod_aluno"] = "Erro na gera&ccedil;&atilde;o";
         echo "<!--\nErro\nClasse n&atilde;o existente: clsPmieducarAluno\n-->";
     }
     if ($registro["ref_cod_aluno"]) {
         $this->addDetalhe(array("Aluno", "{$registro["ref_cod_aluno"]}"));
     }
     if ($registro["ref_cod_matricula"]) {
         $this->addDetalhe(array("Matr&iacute;cula", "{$registro["ref_cod_matricula"]}"));
     }
     $obj_permissoes = new clsPermissoes();
     $nivel_usuario = $obj_permissoes->nivel_acesso($this->pessoa_logada);
     if ($nivel_usuario == 1) {
         if ($registro["ref_cod_instituicao"]) {
             $this->addDetalhe(array("Institui&ccedil;&atilde;o", "{$registro["ref_cod_instituicao"]}"));
         }
     }
     if ($nivel_usuario == 1 || $nivel_usuario == 2) {
         if ($nm_escola) {
             $this->addDetalhe(array("Escola", "{$nm_escola}"));
         }
     }
     if ($nm_curso) {
         $this->addDetalhe(array("Curso", "{$nm_curso}"));
     }
     if ($nm_serie) {
         $this->addDetalhe(array("S&eacute;rie", "{$nm_serie}"));
     }
     if ($nm_turma) {
         $this->addDetalhe(array("Turma", "{$nm_turma}"));
     }
     if ($qtd_modulos) {
         $this->addDetalhe(array("Quantidade de M&oacute;dulos", "{$qtd_modulos}"));
     }
     $obj_matricula = new clsPmieducarMatricula($registro["ref_cod_matricula"]);
     $det_matricula = $obj_matricula->detalhe();
     $modulo = $det_matricula["modulo"];
     $aprovado = $det_matricula["aprovado"];
     $ano_matricula = $det_matricula["ano"];
     $max_qtd_nota = 0;
     $min_qtd_nota = 10;
     //************************************* DETALHE - MATRICULADO NUMA SERIE *************************************//
     if ($registro["ref_ref_cod_serie"]) {
         $obj_dispensa = new clsPmieducarDispensaDisciplina();
         $lst_dispensa = $obj_dispensa->lista($registro["ref_cod_matricula"], $registro["ref_ref_cod_serie"], $registro["ref_ref_cod_escola"], null, null, null, null, null, null, null, null, 1);
         if (is_array($lst_dispensa)) {
             foreach ($lst_dispensa as $key => $disciplina) {
                 $dispensa[$disciplina["ref_cod_disciplina"]] = $disciplina["ref_cod_disciplina"];
             }
         }
         $obj_esd = new clsPmieducarEscolaSerieDisciplina();
         $obj_esd->setOrderby("nm_disciplina");
         $lst_disciplinas = $obj_esd->lista($registro["ref_ref_cod_serie"], $registro["ref_ref_cod_escola"], null, 1, true);
         if ($lst_disciplinas) {
             foreach ($lst_disciplinas as $disciplinas) {
                 $obj_nota_aluno = new clsPmieducarNotaAluno();
                 $qtd_notas = $obj_nota_aluno->getQtdNotas(null, null, $disciplinas["ref_cod_disciplina"], $this->ref_cod_matricula);
                 if ($max_qtd_nota < $qtd_notas) {
                     $max_qtd_nota = $qtd_notas;
                 }
                 if ($min_qtd_nota > $qtd_notas) {
                     $min_qtd_nota = $qtd_notas;
                 }
             }
         }
         if (is_array($lst_disciplinas)) {
             $tabela = "<table>\n\t\t\t\t\t\t       <tr align='center'>\n\t\t\t\t\t\t           <td rowspan='2' bgcolor='#a1b3bd'><b>Nome</b></td>";
             for ($i = 1; $i <= $max_qtd_nota; $i++) {
                 if ($qtd_modulos < $i) {
                     $tabela .= "<td colspan='2' bgcolor='#a1b3bd'><b>Exame</b></td>";
                 } else {
                     $tabela .= "<td colspan='2' bgcolor='#a1b3bd'><b>M&oacute;dulo {$i}</b></td>";
                 }
             }
             $tabela .= "</tr>";
             $tabela .= "<tr align=center>";
             for ($i = 1; $i <= $max_qtd_nota; $i++) {
                 if ($qtd_modulos < $i) {
                     $tabela .= "<td colspan='2' bgcolor='#a1b3bd'><b>Nota</b></td>";
                 } else {
                     $tabela .= "<td bgcolor='#a1b3bd'><b>Nota</b></td><td bgcolor='#a1b3bd'><b>Faltas</b></td>";
                 }
             }
             $tabela .= "</tr>";
             $cont = 0;
             $qtd_disciplinas = count($lst_disciplinas);
             $prim_disciplina = false;
             foreach ($lst_disciplinas as $valor) {
                 //					echo "<pre>"; print_r($lst_disciplinas); die();
                 $parar = false;
                 if (!strcmp($valor["nm_disciplina"], "Matemática")) {
                     $parar = true;
                 }
                 if (!$dispensa[$valor["ref_cod_disciplina"]]) {
                     if ($cont % 2 == 0) {
                         $color = " bgcolor='#E4E9ED' ";
                     } else {
                         $color = " bgcolor='#FFFFFF' ";
                     }
                     unset($notas_aluno);
                     $obj_nota_aluno = new clsPmieducarNotaAluno();
                     $obj_nota_aluno->setOrderby("modulo ASC");
                     $lst_nota_aluno = $obj_nota_aluno->lista(null, null, null, $registro["ref_ref_cod_serie"], $registro["ref_ref_cod_escola"], $valor["ref_cod_disciplina"], $registro["ref_cod_matricula"], null, null, null, null, null, null, 1);
                     if (is_array($lst_nota_aluno)) {
                         foreach ($lst_nota_aluno as $key => $nota_aluno) {
                             if ($nota_aluno['nota']) {
                                 $notas_aluno[] = $nota_aluno["nota"];
                             } else {
                                 $obj_avaliacao_valores = new clsPmieducarTipoAvaliacaoValores($nota_aluno["ref_ref_cod_tipo_avaliacao"], $nota_aluno["ref_sequencial"]);
                                 $det_avaliacao_valores = $obj_avaliacao_valores->detalhe();
                                 $notas_aluno[] = $det_avaliacao_valores["nome"];
                             }
                         }
                     }
                     unset($faltas_aluno);
                     if ($falta_ch_globalizada) {
                         $obj_faltas = new clsPmieducarFaltas();
                         $obj_faltas->setOrderby("sequencial asc");
                         $lst_faltas = $obj_faltas->lista($registro["ref_cod_matricula"]);
                         if (is_array($lst_faltas)) {
                             foreach ($lst_faltas as $key => $faltas) {
                                 $faltas_aluno[] = $faltas['falta'];
                             }
                         }
                     } else {
                         $obj_falta_aluno = new clsPmieducarFaltaAluno();
                         $obj_falta_aluno->setOrderby("cod_falta_aluno ASC");
                         $lst_falta_aluno = $obj_falta_aluno->lista(null, null, null, $registro["ref_ref_cod_serie"], $registro["ref_ref_cod_escola"], $valor["ref_cod_disciplina"], $registro["ref_cod_matricula"], null, null, null, null, null, 1);
                         if (is_array($lst_falta_aluno)) {
                             foreach ($lst_falta_aluno as $key => $falta_aluno) {
                                 $faltas_aluno[] = $falta_aluno["faltas"];
                             }
                         }
                     }
                     $obj_disciplina = new clsPmieducarDisciplina($valor["ref_cod_disciplina"]);
                     $det_disciplina = $obj_disciplina->detalhe();
                     $nm_disciplina = $det_disciplina["nm_disciplina"];
                     $apura_falta = $det_disciplina["apura_falta"];
                     $tabela .= "<tr align='left'>\n\t\t\t\t\t\t\t\t\t    <td {$color} align='left'>{$nm_disciplina}</td>";
                     for ($i = 0; $i < $max_qtd_nota; $i++) {
                         if ($qtd_modulos - 1 < $i) {
                             if ($notas_aluno[$i]) {
                                 $notas_aluno[$i] = number_format($notas_aluno[$i], 2, ",", ".");
                                 $tabela .= "<td align='center' colspan='2' {$color} align='left'>{$notas_aluno[$i]}</td>";
                             } else {
                                 $tabela .= "<td align='center' colspan='2' {$color} align='left'>-</td>";
                             }
                         } else {
                             if ($notas_aluno[$i]) {
                                 $tabela .= "<td align='center' {$color} align='left'>{$notas_aluno[$i]}</td>";
                             } else {
                                 $tabela .= "<td align='center' {$color} align='left'>-</td>";
                             }
                             if ($falta_ch_globalizada && !$prim_disciplina) {
                                 $tabela .= "<td align='center' rowspan='{$qtd_disciplinas}' {$color} align='left'>{$faltas_aluno[$i]}</td>";
                             } else {
                                 if (!$falta_ch_globalizada) {
                                     if (is_numeric($faltas_aluno[$i])) {
                                         $tabela .= "<td align='center' {$color} align='left'>{$faltas_aluno[$i]}</td>";
                                     } else {
                                         $tabela .= "<td align='center' {$color} align='left'>-</td>";
                                     }
                                 }
                             }
                         }
                     }
                     $prim_disciplina = true;
                     $tabela .= "</tr>";
                     $cont++;
                 }
             }
             if (!$ano_letivo || $ano_letivo == $ano_matricula) {
                 if ($max_qtd_nota > 0) {
                     $tabela .= "<tr align='center'>\n\t\t\t\t\t\t\t\t\t    <td align='center'></td>";
                     for ($i = 1; $i <= $max_qtd_nota; $i++) {
                         //if ( ($max_qtd_nota != $min_qtd_nota) && ($min_qtd_nota < $i) && ($qtd_modulos >= $modulo) && false)
                         if (!$det_ref_cod_curso['edicao_final']) {
                             $tabela .= "<td colspan='2'></td>";
                         } else {
                             $tabela .= "<td align='center' colspan='2' bgcolor='#a1b3bd' align='center'><a href='educar_falta_nota_aluno_cad.php?ref_cod_matricula={$registro["ref_cod_matricula"]}&ref_cod_turma={$registro["ref_cod_turma"]}&ref_sequencial_matricula_turma={$registro["sequencial"]}&modulo={$i}'>Editar</a></td>";
                         }
                     }
                     $tabela .= "</tr>";
                 }
             }
             $tabela .= "</table>";
         }
     } else {
         $obj_disciplinas = new clsPmieducarDisciplina();
         $obj_disciplina->setOrderby("nm_disciplina");
         $lst_disciplinas = $obj_disciplinas->lista(null, null, null, null, null, null, null, null, null, null, null, null, 1, null, $registro["ref_cod_curso"]);
         foreach ($lst_disciplinas as $disciplinas) {
             $obj_nota_aluno = new clsPmieducarNotaAluno();
             $qtd_notas = $obj_nota_aluno->getQtdNotas(null, null, null, $this->ref_cod_matricula, $disciplinas["cod_disciplina"]);
             if ($max_qtd_nota < $qtd_notas) {
                 $max_qtd_nota = $qtd_notas;
             }
         }
         if (is_array($lst_disciplinas)) {
             $tabela = "<table>\n\t\t\t\t\t\t       <tr align='center'>\n\t\t\t\t\t\t           <td rowspan='2' bgcolor='#a1b3bd'><b>Nome</b></td>";
             for ($i = 1; $i <= $max_qtd_nota; $i++) {
                 if ($qtd_modulos < $i) {
                     $tabela .= "<td colspan='2' bgcolor='#a1b3bd'><b>Exame</b></td>";
                 } else {
                     $tabela .= "<td colspan='2' bgcolor='#a1b3bd'><b>M&oacute;dulo {$i}</b></td>";
                 }
             }
             $tabela .= "</tr>";
             $tabela .= "<tr align=center>";
             for ($i = 1; $i <= $max_qtd_nota; $i++) {
                 if ($qtd_modulos < $i) {
                     $tabela .= "<td colspan='2' bgcolor='#a1b3bd'><b>Nota</b></td>";
                 } else {
                     $tabela .= "<td bgcolor='#a1b3bd'><b>Nota</b></td><td bgcolor='#a1b3bd'><b>Faltas</b></td>";
                 }
             }
             $tabela .= "</tr>";
             $cont = 0;
             $qtd_disciplinas = count($lst_disciplinas);
             $prim_disciplina = false;
             foreach ($lst_disciplinas as $valor) {
                 if ($cont % 2 == 0) {
                     $color = " bgcolor='#E4E9ED' ";
                 } else {
                     $color = " bgcolor='#FFFFFF' ";
                 }
                 unset($notas_aluno);
                 $obj_nota_aluno = new clsPmieducarNotaAluno();
                 $obj_nota_aluno->setOrderby("modulo ASC");
                 $lst_nota_aluno = $obj_nota_aluno->lista(null, null, null, null, null, null, $registro["ref_cod_matricula"], null, null, null, null, null, null, 1, null, $valor["cod_disciplina"]);
                 if (is_array($lst_nota_aluno)) {
                     foreach ($lst_nota_aluno as $key => $nota_aluno) {
                         if ($nota_aluno['nota']) {
                             $notas_aluno[] = $nota_aluno["nota"];
                         } else {
                             $obj_avaliacao_valores = new clsPmieducarTipoAvaliacaoValores($nota_aluno["ref_ref_cod_tipo_avaliacao"], $nota_aluno["ref_sequencial"]);
                             $det_avaliacao_valores = $obj_avaliacao_valores->detalhe();
                             $notas_aluno[] = $det_avaliacao_valores["nome"];
                         }
                     }
                 }
                 unset($faltas_aluno);
                 if ($falta_ch_globalizada) {
                     $obj_faltas = new clsPmieducarFaltas();
                     $lst_faltas = $obj_faltas->lista($registro["ref_cod_matricula"]);
                     if (is_array($lst_faltas)) {
                         foreach ($lst_faltas as $key => $faltas) {
                             $faltas_aluno[] = $faltas['falta'];
                         }
                     }
                 } else {
                     $obj_falta_aluno = new clsPmieducarFaltaAluno();
                     $obj_falta_aluno->setOrderby("cod_falta_aluno ASC");
                     $lst_falta_aluno = $obj_falta_aluno->lista(null, null, null, null, null, null, $registro["ref_cod_matricula"], null, null, null, null, null, 1, null, $valor["cod_disciplina"]);
                     if (is_array($lst_falta_aluno)) {
                         foreach ($lst_falta_aluno as $key => $falta_aluno) {
                             $faltas_aluno[] = $falta_aluno["faltas"];
                         }
                     }
                 }
                 $nm_disciplina = $valor["nm_disciplina"];
                 $apura_falta = $valor["apura_falta"];
                 $tabela .= "<tr align='center'>\n\t\t\t\t\t\t\t\t    <td {$color} align='center'>{$nm_disciplina}</td>";
                 for ($i = 0; $i < $max_qtd_nota; $i++) {
                     if ($qtd_modulos - 1 < $i) {
                         if ($notas_aluno[$i]) {
                             $notas_aluno[$i] = number_format($notas_aluno[$i], 2, ",", ".");
                             $tabela .= "<td align='center' colspan='2' {$color} align='left'>{$notas_aluno[$i]}</td>";
                         } else {
                             $tabela .= "<td align='center' colspan='2' {$color} align='left'>-</td>";
                         }
                     } else {
                         if ($notas_aluno[$i]) {
                             $tabela .= "<td align='center' {$color} align='left'>{$notas_aluno[$i]}</td>";
                         } else {
                             $tabela .= "<td align='center' {$color} align='left'>-</td>";
                         }
                         if ($falta_ch_globalizada && !$prim_disciplina) {
                             $tabela .= "<td align='center' rowspan='{$qtd_disciplinas}' {$color} align='left'>{$faltas_aluno[$i]}</td>";
                         } else {
                             if (!$falta_ch_globalizada) {
                                 if (is_numeric($faltas_aluno[$i])) {
                                     $tabela .= "<td align='center' {$color} align='left'>{$faltas_aluno[$i]}</td>";
                                 } else {
                                     $tabela .= "<td align='center' {$color} align='left'>-</td>";
                                 }
                             }
                         }
                     }
                 }
                 $prim_disciplina = true;
                 $tabela .= "</tr>";
                 $cont++;
             }
             if ($max_qtd_nota > 0) {
                 $tabela .= "<tr align='center'>\n\t\t\t\t\t\t\t\t    <td align='center'></td>";
                 for ($i = 1; $i <= $max_qtd_nota; $i++) {
                     //if ( ($max_qtd_nota != $min_qtd_nota) && ($min_qtd_nota < $i) && ($qtd_modulos <= $modulo) )
                     if (!$det_ref_cod_curso['edicao_final']) {
                         $tabela .= "<td colspan='2'></td>";
                     } else {
                         $tabela .= "<td align='center' colspan='2' bgcolor='#a1b3bd' align='center'><a href='educar_falta_nota_aluno_cad.php?ref_cod_matricula={$registro["ref_cod_matricula"]}&ref_cod_turma={$registro["ref_cod_turma"]}&ref_sequencial_matricula_turma={$registro["sequencial"]}&modulo={$i}'>Editar</a></td>";
                     }
                 }
                 $tabela .= "</tr>";
             }
             $tabela .= "</table>";
         }
     }
     if ($tabela) {
         $this->addDetalhe(array("Disciplina", "{$tabela}"));
     }
     if ($aprovado) {
         if ($aprovado == 1) {
             $aprovado_ = "Aprovado";
         } elseif ($aprovado == 2) {
             $aprovado_ = "Reprovado";
         } elseif ($aprovado == 3) {
             if ($qtd_modulos < $modulo) {
                 $aprovado_ = "Em Exame";
             } else {
                 $aprovado_ = "Em Andamento";
             }
         }
         $this->addDetalhe(array("Situa&ccedil;&atilde;o", "{$aprovado_}"));
     }
     if ($obj_permissoes->permissao_cadastra(642, $this->pessoa_logada, 7)) {
         if ($qtd_modulos >= $modulo && $aprovado == 3) {
             $this->array_botao = array("Nova Nota/Falta");
             $this->array_botao_url = array("educar_falta_nota_aluno_cad.php?ref_cod_matricula={$registro["ref_cod_matricula"]}&ref_cod_turma={$registro["ref_cod_turma"]}&ref_sequencial_matricula_turma={$registro["sequencial"]}");
         } elseif ($qtd_modulos < $modulo && $aprovado == 3) {
             $this->array_botao = array("Nota Exame");
             if ($qtd_modulos < $max_qtd_nota) {
                 $this->array_botao_url = array("educar_falta_nota_aluno_cad.php?ref_cod_matricula={$registro["ref_cod_matricula"]}&ref_cod_turma={$registro["ref_cod_turma"]}&ref_sequencial_matricula_turma={$registro["sequencial"]}&modulo={$max_qtd_nota}");
             } else {
                 $this->array_botao_url = array("educar_falta_nota_aluno_cad.php?ref_cod_matricula={$registro["ref_cod_matricula"]}&ref_cod_turma={$registro["ref_cod_turma"]}&ref_sequencial_matricula_turma={$registro["sequencial"]}");
             }
         }
     }
     $this->url_cancelar = "educar_falta_nota_aluno_lst.php";
     $this->largura = "100%";
 }
 /**
  * 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]);
 }