function renderHTML()
 {
     session_start();
     $this->pessoa_logada = $_SESSION['id_pessoa'];
     session_write_close();
     foreach ($_POST as $key => $value) {
         $this->{$key} = $value;
     }
     $this->ref_cod_serie = $this->ref_ref_cod_serie;
     $fonte = 'arial';
     $corTexto = '#000000';
     if (!is_numeric($this->ref_cod_instituicao) || !is_numeric($this->ref_cod_escola) || !is_numeric($this->ref_cod_curso) || !is_numeric($this->ref_cod_serie) || !is_numeric($this->ref_cod_turma) || !is_numeric($this->ano)) {
         echo '
     <script>
       alert("A turma não possui nenhum aluno com situação final definida");
       window.parent.fechaExpansivel(\'div_dinamico_\'+(window.parent.DOM_divs.length-1));
     </script>';
         return TRUE;
     }
     $sql = sprintf("\n      SELECT\n        cod_matricula,\n        aprovado,\n        ref_ref_cod_serie,\n        (SELECT\n           nome\n         FROM\n           pmieducar.aluno a,\n           cadastro.pessoa p\n         WHERE\n           a.cod_aluno = m.ref_cod_aluno\n           AND p.idpes = a.ref_idpes\n        ) AS nome\n      FROM\n        pmieducar.matricula m,\n        pmieducar.matricula_turma mt\n      WHERE\n        mt.ref_cod_turma = %d\n        AND mt.ref_cod_matricula = m.cod_matricula\n        AND m.ativo = 1\n        AND mt.ativo = 1\n        AND aprovado IN (1, 2)\n        AND ano = %d\n      ORDER BY\n        ref_ref_cod_serie, nome", $this->ref_cod_turma, $this->ano);
     //verificar se a turma é multiseriada
     $obj_turma = new clsPmieducarTurma($this->ref_cod_turma);
     $det_turma = $obj_turma->detalhe();
     $ref_ref_cod_serie_mult = $det_turma['ref_ref_cod_serie_mult'];
     $db = new clsBanco();
     $db->Consulta($sql);
     if (!$db->numLinhas()) {
         echo '
     <script>
       alert("A turma não possui nenhum aluno com situação final definida");
       window.parent.fechaExpansivel(\'div_dinamico_\'+(window.parent.DOM_divs.length - 1));
     </script>';
         return TRUE;
     }
     $numAlunos = $db->numLinhas();
     // Nome da instituição
     $obj_instituicao = new clsPmieducarInstituicao($this->ref_cod_instituicao);
     $det_instituicao = $obj_instituicao->detalhe();
     $this->nm_instituicao = $det_instituicao['nm_instituicao'];
     // Nome da escola
     $obj_escola = new clsPmieducarEscola($this->ref_cod_escola);
     $det_escola = $obj_escola->detalhe();
     $this->nm_escola = $det_escola['nome'];
     // Nome do curso
     $obj_curso = new clsPmieducarCurso($this->ref_cod_curso);
     $det_curso = $obj_curso->detalhe();
     $this->nm_curso = $det_curso['nm_curso'];
     // Série
     $obj_serie = new clsPmieducarSerie($this->ref_cod_serie);
     $obj_serie->setOrderby('nm_serie');
     $det_serie = $obj_serie->detalhe();
     $this->nm_serie = $det_serie['nm_serie'];
     // Seleciona a regra de avaliação da série
     $regraMapper = new RegraAvaliacao_Model_RegraDataMapper();
     $this->regra = $regraMapper->find($det_serie['regra_avaliacao_id']);
     // Carrega as definições de disciplina
     $componentes = App_Model_IedFinder::getComponentesTurma($this->ref_cod_serie, $this->ref_cod_escola, $this->ref_cod_turma);
     foreach ($componentes as $id => $componente) {
         $this->componentes[$id] = $componente;
     }
     $this->presencaGeral = $this->regra->get('tipoPresenca') == RegraAvaliacao_Model_TipoPresenca::GERAL;
     $obj_turma = new clsPmieducarTurma($this->ref_cod_turma);
     $obj_turma->setCamposLista('nm_turma, hora_inicial');
     $det_turma = $obj_turma->detalhe();
     if ($det_turma['hora_inicial'] < '12:00') {
         $this->nm_turno = 'Matutino';
     } elseif ($det_turma['hora_inicial'] < '18:00') {
         $this->nm_turno = 'Vespertino';
     } else {
         $this->nm_turno = 'Noturno';
     }
     $this->nm_turma = $det_turma["nm_turma"];
     $this->buscaDiasLetivos();
     asort($this->componentes);
     $this->pdf = new clsPDF('Ata de Resultado Final - ' . $this->ano, 'Ata de Resultado Final', 'A4', '', FALSE, FALSE);
     $this->pdf->largura = 842.0;
     $this->pdf->altura = 595.0;
     $this->pdf->OpenPage();
     $this->addCabecalho();
     $esquerda = 3;
     $direita = 834;
     $tam_texto = 10;
     $altura = 130;
     $altura += 50;
     $espessura_linha = 0.3;
     $alunos_matriculados = array();
     while ($db->ProximoRegistro()) {
         list($cod_matricula, $aprovado, $ref_cod_serie, $nome) = $db->Tupla();
         $alunos_matriculados[$cod_matricula] = array('aprovado' => $aprovado, 'nome' => $nome, 'ref_cod_serie' => $ref_cod_serie);
     }
     if (is_array($alunos_matriculados) && count($alunos_matriculados)) {
         $this->getAlunoNotasFaltasTable($alunos_matriculados, $det_curso, $curso_conceitual);
     }
     $this->rodape();
     $this->pdf->CloseFile();
     $this->get_link = $this->pdf->GetLink();
     echo sprintf("\n        <script>\n          window.onload=function() {\n            parent.EscondeDiv('LoadImprimir');\n            window.location='download.php?filename=%s'\n          }\n        </script>", $this->get_link);
     echo sprintf("\n        <html>\n          <center>\n            Se o download não iniciar automaticamente <br /><a target='_blank' href='%s' style='font-size: 16px; color: #000000; text-decoration: underline;'>clique aqui!</a><br><br>\n            <span style='font-size: 10px;'>\n              Para visualizar os arquivos PDF, é necessário instalar o Adobe Acrobat Reader.<br>\n              Clique na Imagem para Baixar o instalador<br><br>\n              <a href=\"http://www.adobe.com.br/products/acrobat/readstep2.html\" target=\"new\"><br>\n                <img src=\"imagens/acrobat.gif\" width=\"88\" height=\"31\" border=\"0\">\n              </a>\n            </span>\n          </center>\n        </html>", $this->get_link);
 }
 function renderHTML()
 {
     if ($_POST) {
         foreach ($_POST as $key => $value) {
             $this->{$key} = $value;
         }
     }
     if ($this->ref_ref_cod_serie) {
         $this->ref_cod_serie = $this->ref_ref_cod_serie;
     }
     $fonte = 'arial';
     $corTexto = '#000000';
     if (!is_numeric($this->ref_cod_escola) || !is_numeric($this->ref_cod_curso) || !is_numeric($this->ref_cod_serie) || !is_numeric($this->ref_cod_turma) || !is_numeric($this->ano)) {
         print $this->getError();
         return;
     }
     // Instituição
     $obj_instituicao = new clsPmieducarInstituicao($this->ref_cod_instituicao);
     $nm_instituicao = $obj_instituicao->detalhe();
     $nm_instituicao = $nm_instituicao['nm_instituicao'];
     // Escola
     $obj_escola = new clsPmieducarEscola($this->ref_cod_escola);
     $nm_escola = $obj_escola->detalhe();
     $nm_escola = $nm_escola['nome'];
     // Curso
     $obj_curso = new clsPmieducarCurso($this->ref_cod_curso);
     $obj_curso->setCamposLista('media, media_exame, nm_curso');
     $det_curso = $obj_curso->detalhe();
     $nm_curso = $det_curso['nm_curso'];
     // Série
     $obj_serie = new clsPmieducarSerie($this->ref_cod_serie);
     $obj_serie->setCamposLista('nm_serie');
     $det_serie = $obj_serie->detalhe();
     $nm_serie = $det_serie['nm_serie'];
     $regraId = $det_serie['regra_avaliacao_id'];
     // Turma
     $obj_turma = new clsPmieducarTurma($this->ref_cod_turma);
     $obj_turma->setCamposLista('nm_turma');
     $det_turma = $obj_turma->detalhe();
     $nm_turma = $det_turma['nm_turma'];
     // Situação da matrícula do aluno (aprovado)
     $situacao = $this->ano == date('Y') ? App_Model_MatriculaSituacao::EM_ANDAMENTO : implode(', ', array(App_Model_MatriculaSituacao::APROVADO, App_Model_MatriculaSituacao::REPROVADO, App_Model_MatriculaSituacao::EM_ANDAMENTO));
     $sql = sprintf('
   SELECT
     m.cod_matricula,
     (
     SELECT
       nome
     FROM
       pmieducar.aluno al,
       cadastro.pessoa
     WHERE
       al.cod_aluno = m.ref_cod_aluno
       AND al.ref_idpes = pessoa.idpes
     ) AS nome
   FROM
     pmieducar.matricula m,
     pmieducar.matricula_turma mt
   WHERE
     mt.ref_cod_turma = %d
     AND mt.ref_cod_matricula = m.cod_matricula
     AND m.aprovado IN (%s)
     AND mt.ativo = 1
     AND m.ativo = 1
     AND m.ano = %d
   ORDER BY
     nome', $this->ref_cod_turma, $situacao, $this->ano);
     $db = new clsBanco();
     $db->Consulta($sql);
     // Mappers
     $regraMapper = new RegraAvaliacao_Model_RegraDataMapper();
     $componenteMapper = new ComponenteCurricular_Model_ComponenteDataMapper();
     $regra = $regraMapper->find($regraId);
     if (is_null($regra->formulaRecuperacao)) {
         $regra = 'A regra de avaliação dessa série não possui uma fórmula de cálculo de recuperação.';
     } else {
         $regra = sprintf('Recuperação: %s; fórmula: %s.', $regra->formulaRecuperacao, $regra->formulaRecuperacao->formulaMedia);
     }
     if ($db->Num_Linhas()) {
         $alunos = array();
         // Instancia objeto de relatório padrão
         $detalhes = sprintf('%s%s%s%s%s%s%s - Turma: %s         %s', $nm_instituicao, "\n", $nm_escola, "\n", $nm_curso, "\n", $nm_serie, $nm_turma, date('d/m/Y'));
         $relatorio = new relatorios('Relação de alunos em exame', 210, FALSE, 'Relação de alunos em exame', 'A4', $detalhes);
         $relatorio->exibe_produzido_por = FALSE;
         $relatorio->setMargem(20, 20, 20, 20);
         $relatorio->novalinha(array(sprintf('Nome Escola: %s    Ano: %d', $nm_escola, $this->ano)), 0, 12, TRUE, 'arial', FALSE, '#000000', '#d3d3d3', '#FFFFFF', FALSE, TRUE);
         $relatorio->novalinha(array(sprintf('Curso: %s    Ano/Série: %s    Turma: %s', $nm_curso, $nm_serie, $nm_turma)), 0, 12, TRUE, 'arial', FALSE, '#000000', '#d3d3d3', '#FFFFFF', FALSE, TRUE);
         $relatorio->novalinha(array(sprintf('%s    Data: %s', $regra, date('d/m/Y'))), 0, 12, TRUE, 'arial', FALSE, '#000000', '#d3d3d3', '#FFFFFF', FALSE, TRUE);
         $relatorio->novalinha(array('Mat.', 'Nome Aluno', 'Componentes', 'Média', 'Nota necessária (mín.)'), 0, 12, TRUE, 'arial', array(30, 180, 150, 60), '#515151', '#d3d3d3', '#FFFFFF', FALSE, TRUE);
         while ($db->ProximoRegistro()) {
             list($cod_matricula, $nome_aluno) = $db->Tupla();
             $boletim = new Avaliacao_Service_Boletim(array('matricula' => $cod_matricula, 'RegraDataMapper' => $regraMapper, 'ComponenteDataMapper' => $componenteMapper));
             $componentes = $boletim->getComponentes();
             $medias = $boletim->getMediasComponentes();
             $situacao = $boletim->getSituacaoComponentesCurriculares();
             if ($situacao->situacao != App_Model_MatriculaSituacao::EM_EXAME) {
                 continue;
             }
             foreach ($situacao->componentesCurriculares as $id => $situacaoComponente) {
                 if ($situacaoComponente->situacao != App_Model_MatriculaSituacao::EM_EXAME) {
                     continue;
                 }
                 $mediaRecuperacao = $boletim->preverNotaRecuperacao($id);
                 if (!is_null($mediaRecuperacao)) {
                     $previsao = sprintf('%s (%.2f)', $mediaRecuperacao->nome, $mediaRecuperacao->valorMinimo);
                 } else {
                     $previsao = 'Nenhuma nota possível.';
                 }
                 $data = array($cod_matricula, $nome_aluno, $componentes[$id], $medias[$id][0]->mediaArredondada, $previsao);
                 $relatorio->novalinha($data, 0, 12, FALSE, 'arial', array(30, 180, 150, 60), '#515151', '#d3d3d3', '#FFFFFF', FALSE, TRUE);
             }
         }
     } else {
         print $this->getError();
         return;
     }
     $this->get_link = $relatorio->fechaPdf();
     echo sprintf('
   <script>
     window.onload=function()
     {
       parent.EscondeDiv("LoadImprimir");
       window.location="download.php?filename=%s"
     }
   </script>', $this->get_link);
     echo sprintf('
   <html>
     <center>
       Se o download não iniciar automaticamente <br>
       <a target="blank" href="%s" style="font-size: 16px; color: #000000; text-decoration: underline;">clique aqui!</a><br><br>
       <span style="font-size: 10px;">
         Para visualizar os arquivos PDF, é necessário instalar o Adobe Acrobat Reader.<br>
         Clique na Imagem para Baixar o instalador<br><br>
         <a href="http://www.adobe.com.br/products/acrobat/readstep2.html" target="new"><br><img src="imagens/acrobat.gif" width="88" height="31" border="0"></a>
       </span>
     </center>
   </html>', $this->get_link);
 }