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(empty($this->ref_cod_turma))
        		{
        	     	echo '<script>
        	     			alert("Erro ao gerar relatório!\nNenhuma turma selecionada!");
        	     			window.parent.fechaExpansivel(\'div_dinamico_\'+(window.parent.DOM_divs.length-1));
        	     		</script>';
        	     	return true;
        		}*/
        if ($this->ref_cod_escola) {
            $obj_escola = new clsPmieducarEscola($this->ref_cod_escola);
            $det_escola = $obj_escola->detalhe();
            $this->nm_escola = $det_escola['nome'];
            $obj_instituicao = new clsPmieducarInstituicao($det_escola['ref_cod_instituicao']);
            $det_instituicao = $obj_instituicao->detalhe();
            $this->nm_instituicao = $det_instituicao['nm_instituicao'];
        }
        $obj_calendario = new clsPmieducarEscolaAnoLetivo();
        $lista_calendario = $obj_calendario->lista($this->ref_cod_escola, $this->ano, null, null, null, null, null, null, null, 1, null);
        if (!$lista_calendario) {
            echo '<script>
	     			alert("Escola não possui calendário definido para este ano");
	     			window.parent.fechaExpansivel(\'div_dinamico_\'+(window.parent.DOM_divs.length-1));
	     		</script>';
            return true;
        }
        if ($this->ref_cod_turma) {
            $where = "\tAND ref_cod_turma = {$this->ref_cod_turma}";
        }
        if ($this->ref_cod_serie) {
            $where .= "\tAND ref_ref_cod_serie   = {$this->ref_cod_serie}";
        }
        //DISTINCT extract( year from ( age( now(), data_nasc ) ) ) as idade
        $sql = "SELECT EXTRACT(YEAR FROM age( to_date ( EXTRACT( year from now() )   || '-12-31' ,'yyyy-mm-dd') , data_nasc) ) as idade\n\t\t\t\t  FROM pmieducar.matricula_turma mt\n\t\t\t\t       ,pmieducar.matricula      m\n\t\t\t\t       ,pmieducar.aluno          a\n\t\t\t\t       ,cadastro.fisica          f\n\t\t\t\t WHERE cod_matricula = ref_cod_matricula\n\t\t\t\t   AND mt.ativo = 1\n\t\t\t\t   AND m.ativo  = 1\n\t\t\t\t   AND m.ref_cod_aluno = a.cod_aluno\n\t\t\t\t   AND f.idpes = a.ref_idpes\n\t\t\t\t   {$where}\n\t\t\t\t   AND ref_ref_cod_escola  = {$this->ref_cod_escola}\n\t\t\t\t   ANd ref_cod_curso       = {$this->ref_cod_curso}\n\t\t\t\t   AND data_nasc IS NOT NULL\n\t\t\t\t   AND m.ano = {$this->ano}\n\t\t\t\t ORDER BY idade";
        $db = new clsBanco();
        $db->Consulta($sql);
        $array_idades = array();
        if ($db->Num_Linhas()) {
            while ($db->ProximoRegistro()) {
                $registro = $db->Tupla();
                $array_idades_[$registro['idade']] = "-";
                $array_idades[$registro['idade']] = $registro['idade'];
            }
        } else {
            echo '<script>
	     			alert("Nenhum aluno está matriculado");
	     			window.parent.fechaExpansivel(\'div_dinamico_\'+(window.parent.DOM_divs.length-1));
	     		</script>';
            return true;
        }
        if ($array_idades) {
            $relatorio = new relatorios("Relatório de alunos por idades       Ano - {$this->ano}", 210, false, "Relatório de alunos por idade", "A4", "{$this->nm_instituicao}\n{$this->nm_escola}\n\n" . date("d/m/Y"));
            $relatorio->setMargem(20, 20, 50, 50);
            $relatorio->exibe_produzido_por = false;
            $array_cab = array_merge(array("Série", "Turma"), $array_idades);
            $array_cab[] = "Total";
            $divisoes = array(100, 80);
            $divisoes_texto = array(100, 80);
            $tamanho_divisao = 23 + (15 - count($array_idades) - 1) * 2;
            for ($ct = 0; $ct < 20; $ct++) {
                $divisoes[] = $tamanho_divisao;
                $divisoes_texto[] = $tamanho_divisao;
            }
            $relatorio->novalinha($array_cab, 0, 16, true, "arial", $divisoes, "#515151", "#d3d3d3", "#ffffff", false, true);
            $db = new clsBanco();
            $obj_curso = new clsPmieducarCurso();
            $lst_curso = $obj_curso->lista($this->ref_cod_curso, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, 1, null, $this->ref_cod_instituicao);
            if ($lst_curso) {
                foreach ($lst_curso as $curso) {
                    $relatorio->novalinha(array($curso['nm_curso']), 0, 16, true, "arial", false, "#515151", "#d3d3d3", "#ffffff", false, true);
                    $obj = new clsPmieducarSerie();
                    $obj->setOrderby('cod_serie,etapa_curso');
                    $lista_serie_curso = $obj->lista($this->ref_cod_serie, null, null, $curso['cod_curso'], null, null, null, null, null, null, null, null, 1, $this->ref_cod_instituicao);
                    if ($lista_serie_curso) {
                        foreach ($lista_serie_curso as $serie) {
                            $obj_turma = new clsPmieducarTurma();
                            $lst_turma = $obj_turma->lista($this->ref_cod_turma, null, null, $serie['cod_serie'], $this->ref_cod_escola, null, null, null, null, null, null, null, null, null, 1, null, null, null, null, null, null, null, null, null, $curso['cod_curso'], $this->ref_cod_instituicao);
                            if ($lst_turma) {
                                foreach ($lst_turma as $turma) {
                                    $array_idades = $array_idades_;
                                    $total = 0;
                                    $sql = "SELECT count(1) as total\n\t\t       \t\t\t\t\t\t\t\t\t   ,EXTRACT(YEAR FROM age( to_date ( EXTRACT( year from now() )   || '-12-31' ,'yyyy-mm-dd') , data_nasc) ) as idade\n\t\t\t\t\t\t\t\t\t\t\t  FROM pmieducar.matricula_turma mt\n\t\t\t\t\t\t\t\t\t\t\t       ,pmieducar.matricula      m\n\t\t\t\t\t\t\t\t\t\t\t       ,pmieducar.aluno          a\n\t\t\t\t\t\t\t\t\t\t\t       ,cadastro.fisica          f\n\t\t\t\t\t\t\t\t\t\t\t WHERE cod_matricula = ref_cod_matricula\n\t\t\t\t\t\t\t\t\t\t\t   AND mt.ativo = 1\n\t\t\t\t\t\t\t\t\t\t\t   AND m.ativo  = 1\n\t\t\t\t\t\t\t\t\t\t\t   AND m.ref_cod_aluno = a.cod_aluno\n\t\t\t\t\t\t\t\t\t\t\t   AND f.idpes = a.ref_idpes\n\t\t\t\t\t\t\t\t\t\t\t   AND ref_cod_turma = {$turma['cod_turma']}\n\t\t\t\t\t\t\t\t\t\t\t   AND ref_ref_cod_serie   = {$serie['cod_serie']}\n\t\t\t\t\t\t\t\t\t\t\t   AND ref_ref_cod_escola  = {$this->ref_cod_escola}\n\t\t\t\t\t\t\t\t\t\t\t   ANd ref_cod_curso       = {$curso['cod_curso']}\n\t\t\t\t\t\t\t\t\t\t\t   AND m.ano = {$this->ano}\n\t\t\t\t\t\t\t\t\t\t\t   AND aprovado IN (1,2,3)\n\t\t\t\t\t\t\t\t\t\t\t   \n\t\t\t\t\t\t\t\t\t\t\t   AND data_nasc IS NOT NULL\n\t\t\t\t\t\t\t\t\t\t\t GROUP BY EXTRACT(YEAR FROM age( to_date ( EXTRACT( year from now() )   || '-12-31' ,'yyyy-mm-dd') , data_nasc) )\n\t\t\t\t\t\t\t\t\t\t\t ORDER BY idade";
                                    $db->Consulta($sql);
                                    if ($db->Num_Linhas()) {
                                        while ($db->ProximoRegistro()) {
                                            $registro = $db->Tupla();
                                            $array_idades[$registro['idade']] = $registro['total'];
                                            $total += $registro['total'];
                                        }
                                        $valores = array_merge(array($serie['nm_serie'], $turma['nm_turma']), $array_idades, array($total));
                                        $relatorio->novalinha($valores, 0, 16, false, "arial", $divisoes, "#515151", "#d3d3d3", "#ffffff", false, true);
                                    }
                                }
                            }
                        }
                    }
                }
                //$relatorio->quebraPagina();
            }
            $this->get_link = $relatorio->fechaPdf();
        }
        echo "<script>window.onload=function(){parent.EscondeDiv('LoadImprimir');window.location='download.php?filename=" . $this->get_link . "'}</script>";
        echo "<html><center>Se o download não iniciar automaticamente <br /><a target='blank' href='" . $this->get_link . "' style='font-size: 16px; color: #000000; text-decoration: underline;'>clique aqui!</a><br><br>\n\t\t\t<span style='font-size: 10px;'>Para visualizar os arquivos PDF, é necessário instalar o Adobe Acrobat Reader.<br>\n\n\t\t\tClique na Imagem para Baixar o instalador<br><br>\n\t\t\t<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>\n\t\t\t</span>\n\t\t\t</center>";
    }
} else {
    $semestre = null;
}
$obj_escola_ano_letivo = new clsPmieducarEscolaAnoLetivo();
//		$lst_escola_ano_letivo = $obj_escola_ano_letivo->lista( $ref_cod_escola,$ano_requisitado,null,null,1,null,null,null,null,1 );
$lst_escola_ano_letivo = $obj_escola_ano_letivo->lista($ref_cod_escola, $ano_requisitado, null, null, null, null, null, null, null, 1);
if (is_array($lst_escola_ano_letivo)) {
    $det_escola_ano_letivo = array_shift($lst_escola_ano_letivo);
    $ano = $det_escola_ano_letivo['ano'];
    $obj_matricula_turma = new clsPmieducarMatriculaTurma();
    $obj_matricula_turma->setOrderby("nm_curso, nm_serie, to_ascii(nome) ASC");
    $lst_matricula_turma = $obj_matricula_turma->dadosAlunosNaoEnturmados($ref_cod_escola, $ref_ref_cod_serie, $ref_cod_curso, $ano, true, $semestre);
    if (is_array($lst_matricula_turma)) {
        $total = count($lst_matricula_turma);
        $relatorio = new relatorios("RELAÇÃO DOS ALUNOS NÃO ENTURMADOS   -   Ano {$ano}                                    Total de Alunos = {$total}", 120, false, "i-Educar", "A4", "Prefeitura COBRA Tecnologia\nSecretaria da Educação\n\n" . date("d/m/Y"), "#515151");
        $relatorio->setMargem(20, 20, 50, 50);
        $relatorio->exibe_produzido_por = false;
        $relatorio->novalinha(array("Cód. Aluno", "Nome do Aluno", "Data Nascimento", "Nome do Responsável"), 0, 16, true, "arial", array(75, 175, 100), "#515151", "#d3d3d3", "#FFFFFF", false, true);
        $cod_curso = 0;
        $cod_serie = 0;
        $db = new clsBanco();
        foreach ($lst_matricula_turma as $matriculas) {
            if ($cod_serie != $matriculas['ref_ref_cod_serie']) {
                $cod_curso = $matriculas['ref_cod_curso'];
                $cod_serie = $matriculas['ref_ref_cod_serie'];
                $consulta = "SELECT count(1)\n\t\t\t\t\t\t\t\t\t\t   FROM pmieducar.matricula m\n\t\t\t\t\t\t\t\t\t\t  WHERE m.ativo  = 1\n\t\t\t\t\t\t\t\t\t\t    AND ultima_matricula = 1\n\t\t\t\t\t\t\t\t\t\t    AND m.aprovado IN (1,2,3)\n\t\t\t\t\t\t\t\t\t\t    AND ano = {$ano}\n\t\t\t\t\t\t\t\t\t\t\tAND ref_cod_curso = {$cod_curso}\n\t\t\t\t\t\t\t\t\t\t\tAND ref_ref_cod_escola = {$ref_cod_escola}\n\t\t\t\t\t\t\t\t\t\t\tAND ref_ref_cod_serie = {$cod_serie}\n\t\t\t\t\t\t\t\t\t\t\tAND NOT EXISTS ( SELECT DISTINCT 1\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t   FROM pmieducar.matricula_turma mt\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t  WHERE mt.ref_cod_matricula = m.cod_matricula\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t    AND mt.ativo = 1 )\n\t\t\t\t\t\t\t\t\t\t";
                $total_alunos = (int) $db->CampoUnico($consulta);
                $relatorio->novalinha(array("{$matriculas['nm_curso']}  -  {$matriculas['nm_serie']}              Total Alunos:{$total_alunos}"), 0, 16, true, "arial", array(400), "#515151", "#d3d3d3", "#FFFFFF", false, true);
            } else {
                if ($cod_curso != $matriculas['ref_cod_curso']) {
                    $cod_curso = $matriculas['ref_cod_curso'];
 /**
  * @global $coreExt
  */
 function renderHTML()
 {
     global $coreExt;
     $config = $coreExt['Config']->app->template->pdf;
     if ($_POST) {
         foreach ($_POST as $key => $value) {
             $this->{$key} = $value;
         }
     }
     $fonte = 'arial';
     $corTexto = '#000000';
     if (empty($this->ref_cod_instituicao)) {
         echo '
   <script>
     alert("Erro ao gerar relatório!\\nNenhuma instituição selecionada!");
     window.parent.fechaExpansivel(\'div_dinamico_\'+(window.parent.DOM_divs.length-1));
   </script>';
         return TRUE;
     }
     $obj_instituicao = new clsPmieducarInstituicao($this->ref_cod_instituicao);
     $det_instituicao = $obj_instituicao->detalhe();
     $this->nm_instituicao = $det_instituicao['nm_instituicao'];
     if ($this->ref_cod_escola) {
         $obj_escola = new clsPmieducarEscola($this->ref_cod_escola);
         $det_escola = $obj_escola->detalhe();
         $this->nm_escola = $det_escola['nome'];
     }
     if ($this->ref_cod_escola) {
         $sql = sprintf('
     SELECT
       s.cod_servidor,
       p.nome,
       sn.nm_subnivel,
       sn.salario,
       n.nm_nivel
     FROM
       pmieducar.servidor s,
       pmieducar.subnivel sn,
       pmieducar.nivel n,
       cadastro.pessoa p,
       pmieducar.servidor_alocacao a
     WHERE
       s.cod_servidor = p.idpes
       AND s.ref_cod_subnivel IS NOT NULL
       AND s.ref_cod_subnivel = sn.cod_subnivel
       AND sn.ref_cod_nivel = n.cod_nivel
       AND s.ref_cod_instituicao = %d
       AND a.ref_cod_servidor = s.cod_servidor
       AND a.ref_cod_escola = %d
       %s
       AND s.ativo = 1
     ORDER BY
       p.nome', $this->ref_cod_instituicao, $this->ref_cod_escola, $where);
     } else {
         $sql = sprintf('
     SELECT
       s.cod_servidor,
       p.nome,
       sn.nm_subnivel,
       sn.salario,
       n.nm_nivel
     FROM
       pmieducar.servidor s,
       pmieducar.subnivel sn,
       pmieducar.nivel n,
       cadastro.pessoa p
     WHERE
       s.cod_servidor = p.idpes
       AND s.ref_cod_subnivel IS NOT NULL
       AND s.ref_cod_subnivel = sn.cod_subnivel
       AND sn.ref_cod_nivel = n.cod_nivel
       AND s.ref_cod_instituicao = %d
       %s
       AND s.ativo  = 1
     ORDER BY
       p.nome', $this->ref_cod_instituicao, $where);
     }
     $db = new clsBanco();
     $db->Consulta($sql);
     if ($db->Num_Linhas()) {
         $relatorio = new relatorios('Servidores por Nível', 210, FALSE, 'Servidores por Nível', 'A4', $config->get($config->titulo, 'i-Educar') . "\n" . $this->nm_escola);
         $relatorio->setMargem(20, 20, 50, 50);
         $relatorio->exibe_produzido_por = FALSE;
         $relatorio->novalinha(array('Nome', 'Nível', 'Salário'), 0, 16, TRUE, 'arial', array(75, 320, 100), '#515151', '#d3d3d3', '#FFFFFF', FALSE, TRUE);
         while ($db->ProximoRegistro()) {
             list($cod_servidor, $nome, $subnivel, $salario, $nivel) = $db->Tupla();
             $relatorio->novalinha(array($nome, "{$nivel[$subnivel]}", $salario), 0, 16, FALSE, 'arial', array(75, 330, 80), '#515151', '#d3d3d3', '#FFFFFF', FALSE, FALSE);
         }
         $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);
     } else {
         echo '
     <script>
       window.onload = function()
       {
         parent.EscondeDiv("LoadImprimir");
       }
     </script>
     <center>Nenhum servidor cadastrado ou categorizado em níveis.</center>';
     }
 }
 function Novo()
 {
     if (!$this->data_inicial) {
         $this->data_inicial = false;
     } else {
         $titulo = "({$this->data_inicial} - ";
         $data = explode("/", $this->data_inicial);
         $this->data_inicial = "{$data[2]}/{$data[1]}/{$data[0]}";
     }
     if (!$this->data_final) {
         $titulo .= date('d/m/Y', time()) . ")";
         $this->data_final = false;
     } else {
         $titulo .= "{$this->data_final})";
         $data = explode("/", $this->data_final);
         $this->data_final = "{$data[2]}/{$data[1]}/{$data[0]}";
     }
     // gera a lista de licitacoes deste periodo
     $where = "";
     if ($this->data_inicial) {
         $where .= " AND data_hora >= {$this->data_inicial}";
     }
     if ($this->data_final) {
         $where .= " AND data_hora <= {$this->data_final}";
     }
     $db = new clsBanco();
     $db2 = new clsBanco();
     $db->Consulta("\n\t\t\tSELECT \n\t\t\t\tcod_compras_licitacoes, \n\t\t\t\tref_ref_cod_pessoa_fj, \n\t\t\t\tref_cod_compras_modalidade, \n\t\t\t\tnumero, \n\t\t\t\tobjeto, \n\t\t\t\tdata_hora, \n\t\t\t\tref_pregoeiro, \n\t\t\t\tref_equipe1, \n\t\t\t\tref_equipe2, \n\t\t\t\tref_equipe3, \n\t\t\t\tano_processo, \n\t\t\t\tmes_processo, \n\t\t\t\tseq_processo, \n\t\t\t\tseq_portaria, \n\t\t\t\tano_portaria, \n\t\t\t\tvalor_referencia, \n\t\t\t\tvalor_real, \n\t\t\t\tref_cod_compras_final_pregao \n\t\t\tFROM \n\t\t\t\tcompras_licitacoes, \n\t\t\t\tcompras_pregao_execucao\n\t\t\tWHERE \n\t\t\t\tref_cod_compras_licitacoes = cod_compras_licitacoes \n\t\t\t\t{$where}\n\t\t");
     if ($db->Num_Linhas()) {
         $relatorio = new relatorios("Relatório de Licitações", 100, false, "Intranet - CTIMA", "A4h");
         $relatorio->setMargem(25, 25);
         while ($db->ProximoRegistro()) {
             $objPessoa = new clsPessoaFisica();
             $nm_final = "";
             list($cod_compras_licitacoes, $ref_ref_cod_pessoa_fj, $ref_cod_compras_modalidade, $numero, $objeto, $data_hora, $ref_pregoeiro, $ref_equipe1, $ref_equipe2, $ref_equipe3, $ano_processo, $mes_processo, $seq_processo, $seq_portaria, $ano_portaria, $valor_referencia, $valor_real, $ref_cod_compras_final_pregao) = $db->Tupla();
             if ($ref_cod_compras_final_pregao) {
                 $nm_final = $db2->UnicoCampo("SELECT nm_final FROM compras_final_pregao WHERE cod_compras_final_pregao = '{$ref_cod_compras_final_pregao}'");
             }
             list($nm_pregoeiro) = $objPessoa->queryRapida($ref_pregoeiro, "nome");
             list($nm_equipe1) = $objPessoa->queryRapida($ref_equipe1, "nome");
             $nm_equipe1 = substr($nm_equipe1, 0, 18) . "...";
             list($nm_equipe2) = $objPessoa->queryRapida($ref_equipe2, "nome");
             $nm_equipe2 = substr($nm_equipe2, 0, 18) . "...";
             list($nm_equipe3) = $objPessoa->queryRapida($ref_equipe3, "nome");
             $nm_equipe3 = substr($nm_equipe3, 0, 18) . "...";
             // escreve os dados da licitacao
             $relatorio->novalinha(array("Data", "Número"), 0, 13, true, "arial", 110);
             $relatorio->novalinha(array(date("d/m/Y", strtotime(substr($data_hora, 0, 19))), $numero), 0, 13, false, "arial", 110);
             $relatorio->novalinha(array("Processo", "Portaria"), 0, 13, true, "arial", 110);
             $relatorio->novalinha(array("{$ano_processo} {$mes_processo} {$seq_processo}", "{$ano_portaria} {$seq_portaria}"), 0, 13, false, "arial", 110);
             $relatorio->novalinha(array("Objeto:", $objeto), 0, 26, false, "arial", 110);
             $relatorio->novalinha(array("Pregoeiro:", $nm_pregoeiro), 0, 13, false, "arial", 110);
             $relatorio->novalinha(array("Equipe:", "{$nm_equipe1},", "{$nm_equipe2},", "{$nm_equipe3}."), 0, 13, false, "arial", 110);
             $relatorio->novalinha(array("Valor Referencia", "Valor Final", "Diferença", "%", "Status"), 0, 13, false, "arial", array(110, 100, 100, 70, 100));
             $porcentagem = 100;
             if ($valor_referencia) {
                 $porcentagem = 100 - $valor_real / $valor_referencia * 100;
             }
             $relatorio->novalinha(array(number_format($valor_referencia, "2", ",", "."), number_format($valor_real, "2", ",", "."), number_format($valor_referencia - $valor_real, "2", ",", "."), number_format($porcentagem, "2", ",", ".") . "%", $nm_final), 0, 13, false, "arial", array(110, 100, 100, 70, 100));
         }
         // pega o link e exibe ele ao usuario
         $link = $relatorio->fechaPdf();
         $this->campoRotulo("arquivo", "Arquivo", "<a href='" . $link . "'>Clique aqui para Baixar</a>");
     }
     $this->largura = "100%";
     return true;
 }
 /**
  * @global $coreExt
  */
 function renderHTML()
 {
     global $coreExt;
     $config = $coreExt['Config']->app->template->pdf;
     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';
     $obj_instituicao = new clsPmieducarInstituicao($det_escola['ref_cod_instituicao']);
     $det_instituicao = $obj_instituicao->detalhe();
     $this->nm_instituicao = $det_instituicao['nm_instituicao'];
     if ($this->ref_cod_escola) {
         $obj_escola = new clsPmieducarEscola($this->ref_cod_escola);
         $det_escola = $obj_escola->detalhe();
         $this->nm_escola = $det_escola['nome'];
     }
     $obj_curso = new clsPmieducarCurso($this->ref_cod_curso);
     $det_curso = $obj_curso->detalhe();
     $this->nm_curso = $det_curso['nm_curso'];
     if ($this->ref_cod_disciplina) {
         $where = ' AND mcc.id = ' . $this->ref_cod_disciplina;
     }
     if ($this->ref_cod_escola) {
         $sql = sprintf('
     SELECT
       DISTINCT(cod_servidor_alocacao),
       cod_servidor,
       cp.nome,
       sa.carga_horaria,
       CASE periodo
         WHEN 1 THEN \'Matutino\'
         WHEN 2 THEN \'Vespertino\'
         ELSE \'Noturno\'
       END AS turno,
       mcc.nome as nm_disciplina
     FROM
       pmieducar.servidor s,
       pmieducar.servidor_disciplina sd,
       pmieducar.servidor_alocacao sa,
       modules.componente_curricular mcc,
       cadastro.pessoa cp
     WHERE
       cod_servidor = sd.ref_cod_servidor
       AND cod_servidor = sa.ref_cod_servidor
       AND ref_cod_instituicao = sd.ref_ref_cod_instituicao
       AND ref_cod_instituicao = sa.ref_ref_cod_instituicao
       AND mcc.id = ref_cod_disciplina
       AND cod_servidor = idpes
       AND ref_cod_instituicao = \'%d\'
       AND ref_cod_escola = \'%d\'
       %s
       AND sd.ref_cod_curso = \'%d\'
       AND sa.ativo = 1
       AND s.ativo  = 1
     ORDER BY
       nome, nm_disciplina', $this->ref_cod_instituicao, $this->ref_cod_escola, $where, $this->ref_cod_curso);
     } else {
         $sql = sprintf('
     SELECT
       DISTINCT(cod_servidor_alocacao),
       cod_servidor,
       cp.nome,
       CAST(s.carga_horaria || \' hour\' AS interval) AS carga_horaria,
       mcc.nome as nm_disciplina,
       CASE periodo
         WHEN 1 THEN \'Matutino\'
         WHEN 2 THEN \'Vespertino\'
         WHEN 3 THEN \'Noturno\'
       END as turno
     FROM
       pmieducar.servidor s,
       pmieducar.servidor_disciplina sd,
       modules.componente_curricular mcc,
       cadastro.pessoa cp,
       pmieducar.servidor_alocacao sa
    WHERE
      cod_servidor = sd.ref_cod_servidor
      AND cod_servidor = idpes
      AND ref_cod_instituicao = sd.ref_ref_cod_instituicao
      AND mcc.id = ref_cod_disciplina
      AND ref_cod_instituicao = \'%d\'
      %s
      AND sd.ref_cod_curso = \'%d\'
      AND s.ativo = 1
      AND cod_servidor = sa.ref_cod_servidor
    ORDER BY
      nome, nm_disciplina', $this->ref_cod_instituicao, $where, $this->ref_cod_curso);
     }
     $db = new clsBanco();
     $db->Consulta($sql);
     $nm_disciplina = NULL;
     if ($db->Num_Linhas()) {
         $relatorio = new relatorios('Professores por Disciplina', 210, FALSE, 'Professores por Disciplina', 'A4', $config->get($config->titulo, 'i-Educar') . "\n{$this->nm_escola}\n{$this->nm_curso}");
         $relatorio->setMargem(20, 20, 50, 50);
         $relatorio->exibe_produzido_por = FALSE;
         while ($db->ProximoRegistro()) {
             $registro = $db->Tupla();
             if ($registro['nm_disciplina'] != $nm_disciplina) {
                 $relatorio->novalinha(array($registro['nm_disciplina']), 0, 16, TRUE, 'arial', array(75, 330, 100), '#515151', '#d3d3d3', '#FFFFFF', FALSE, FALSE);
                 if ($this->ref_cod_escola) {
                     $relatorio->novalinha(array('Matrícula', 'Nome', 'Carga Horária', 'Turno'), 0, 16, TRUE, 'arial', array(75, 320, 100), '#515151', '#d3d3d3', '#FFFFFF', FALSE, TRUE);
                 } else {
                     $relatorio->novalinha(array('Matrícula', 'Nome', 'Carga Horária', 'Turno'), 0, 16, TRUE, 'arial', array(75, 320, 100), '#515151', '#d3d3d3', '#FFFFFF', FALSE, TRUE);
                 }
                 $nm_disciplina = $registro['nm_disciplina'];
             }
             $relatorio->novalinha(array($registro['cod_servidor'], $registro['nome'], $registro['carga_horaria'], $registro['turno']), 0, 16, FALSE, 'arial', array(75, 330, 80), '#515151', '#d3d3d3', '#FFFFFF', FALSE, FALSE);
         }
         $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>', $this->get_link);
     } else {
         if ($this->ref_cod_escola) {
             $msg = 'Nenhum professor ministra a disciplina ou está alocado na escola selecionada.';
         } else {
             $msg = 'Nenhum professor ministra a disciplina selecionada.';
         }
         echo '<script>
        window.onload=function()
        {
          parent.EscondeDiv("LoadImprimir");
        }
      </script>' . '<center>' . $msg . '</center>';
     }
 }
 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;
     }
     $this->ref_cod_modulo = explode('-', $this->ref_cod_modulo);
     $this->ref_cod_modulo = array_pop($this->ref_cod_modulo);
     $fonte = 'arial';
     $corTexto = '#000000';
     if (empty($this->ref_cod_turma)) {
         echo '<script>
          alert("Erro ao gerar relatório!\\nNenhuma turma selecionada!");
          window.parent.fechaExpansivel(\'div_dinamico_\'+(window.parent.DOM_divs.length-1));
        </script>';
         return TRUE;
     }
     if ($this->ref_cod_escola) {
         $obj_escola = new clsPmieducarEscola($this->ref_cod_escola);
         $det_escola = $obj_escola->detalhe();
         $this->nm_escola = $det_escola['nome'];
         $obj_instituicao = new clsPmieducarInstituicao($det_escola['ref_cod_instituicao']);
         $det_instituicao = $obj_instituicao->detalhe();
         $this->nm_instituicao = $det_instituicao['nm_instituicao'];
     }
     $obj_calendario = new clsPmieducarEscolaAnoLetivo();
     $lista_calendario = $obj_calendario->lista($this->ref_cod_escola, $this->ano, NULL, NULL, NULL, NULL, NULL, NULL, NULL, 1, NULL);
     $obj_turma = new clsPmieducarTurma($this->ref_cod_turma);
     $det_turma = $obj_turma->detalhe();
     $this->nm_turma = $det_turma['nm_turma'];
     $obj_serie = new clsPmieducarSerie($this->ref_cod_serie);
     $det_serie = $obj_serie->detalhe();
     $this->nm_serie = $det_serie['nm_serie'];
     $obj_pessoa = new clsPessoa_($det_turma['ref_cod_regente']);
     $det = $obj_pessoa->detalhe();
     $this->nm_professor = $det['nome'];
     //
     $regraMapper = new RegraAvaliacao_Model_RegraDataMapper();
     $this->regra = $regraMapper->find($det_serie['regra_avaliacao_id']);
     if (!$lista_calendario) {
         echo '<script>
          alert("Escola não possui calendário definido para este ano");
          window.parent.fechaExpansivel(\'div_dinamico_\'+(window.parent.DOM_divs.length-1));
        </script>';
         return TRUE;
     }
     $obj = new clsPmieducarSerie();
     $obj->setOrderby('cod_serie, etapa_curso');
     $lista_serie_curso = $obj->lista(NULL, NULL, NULL, $this->ref_cod_curso, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, 1, $this->ref_cod_instituicao);
     $obj_curso = new clsPmieducarCurso($this->ref_cod_curso);
     $det_curso = $obj_curso->detalhe();
     $this->nm_curso = $det_curso['nm_curso'];
     // Seleciona os alunos da turma
     $obj_matricula_turma = new clsPmieducarMatriculaTurma();
     $obj_matricula_turma->setOrderby('nome_ascii');
     $lst_matricula_turma = $obj_matricula_turma->lista($this->ref_cod_matricula, $this->ref_cod_turma, NULL, NULL, NULL, NULL, NULL, NULL, 1, $this->ref_cod_serie, $this->ref_cod_curso, $this->ref_cod_escola, $this->ref_cod_instituicao, NULL, NULL, array(1, 2, 3), NULL, NULL, $this->ano, NULL, NULL, NULL, NULL, TRUE, NULL, NULL, TRUE, NULL, $this->semestre);
     $componentes = $array_disc = $array_cab = array();
     if ('f' == $this->tipo && $this->regra->get('tipoPresenca') == RegraAvaliacao_Model_TipoPresenca::GERAL) {
         $array_disc = $array_cab = array("FALTAS");
     } else {
         try {
             $componentes = App_Model_IedFinder::getComponentesTurma($this->ref_cod_serie, $this->ref_cod_escola, $this->ref_cod_turma);
         } catch (App_Model_Exception $e) {
         }
     }
     if ($lst_matricula_turma) {
         $titulo = sprintf('Espelho de Notas Bimestral %dº Bimestre Ano %d', $this->ref_cod_modulo, $this->ano);
         $subtitulo = sprintf("%s\n%s\n%s\n%s -  Turma: %s             %s", $this->nm_instituicao, $this->nm_escola, $this->nm_curso, $this->nm_serie, $this->nm_turma, date('d/m/Y'));
         $relatorio = new relatorios($titulo, 210, FALSE, 'Espelho de Notas Bimestral', 'A4', $subtitulo);
         $relatorio->setMargem(20, 20, 50, 50);
         $relatorio->exibe_produzido_por = FALSE;
         if (0 == count($array_disc) && 0 < count($componentes)) {
             foreach ($componentes as $componente) {
                 $array_disc[$componente->id] = $componente;
                 $array_cab[] = str2upper($componente->abreviatura);
             }
             asort($array_disc);
             sort($array_cab);
         }
         $array_cab = array_merge(array('Cód.', 'Nome do Aluno'), $array_cab);
         $divisoes = array(40, 165);
         $divisoes_texto = array(40, 165);
         $tamanho_divisao = 32 + (10 - count($array_disc)) * 5;
         for ($ct = 0; $ct < 20; $ct++) {
             $divisoes[] = $tamanho_divisao;
             $divisoes_texto[] = $tamanho_divisao;
         }
         $relatorio->novalinha($array_cab, 0, 16, TRUE, 'arial', $divisoes, '#515151', '#D3D3D3', '#FFFFFF', FALSE, TRUE);
         foreach ($lst_matricula_turma as $matricula) {
             $boletim = new Avaliacao_Service_Boletim(array('matricula' => $matricula['ref_cod_matricula'], 'RegraDataMapper' => $regraMapper));
             $tam_fonte = NULL;
             $tam_linha = 16;
             $componentes = $boletim->getComponentes();
             foreach ($array_disc as $cid => $componente) {
                 // Presença geral, seleciona apenas a quantidade de faltas da etapa
                 if (0 == $cid) {
                     $faltas[$cid] = $boletim->getFalta($this->ref_cod_modulo);
                     break;
                 }
                 if (!in_array($cid, array_keys($componentes))) {
                     $notas[$cid] = 'D';
                     $faltas[$cid] = 'D';
                     continue;
                 }
                 $notas[$cid] = $boletim->getNotaComponente($cid, $this->ref_cod_modulo);
                 $faltas[$cid] = $boletim->getFalta($this->ref_cod_modulo, $cid);
             }
             // @todo WTF?!
             if (strlen($matricula['nome']) > 24) {
                 $matricula['nome'] = explode(' ', $matricula['nome']);
                 if (is_array($matricula['nome'])) {
                     $nome_aluno = array_shift($matricula['nome']);
                 }
                 if (is_array($matricula['nome'])) {
                     $nome_aluno .= ' ' . array_shift($matricula['nome']);
                 }
                 if (is_array($matricula['nome'])) {
                     $nome_aluno .= ' ' . array_pop($matricula['nome']);
                 }
                 $matricula['nome'] = $nome_aluno;
             }
             unset($array_val);
             $array_val = array();
             $array_val[] = $matricula['ref_cod_aluno'];
             $array_val[] = $matricula['nome'];
             foreach ($array_disc as $cid => $disc) {
                 if ($this->tipo == 'n') {
                     $array_val[] = $notas[$cid]->notaArredondada;
                     continue;
                 } else {
                     $array_val[] = $faltas[$cid]->quantidade;
                     continue;
                 }
                 $array_val[] = '';
             }
             $relatorio->novalinha($array_val, 0, $tam_linha, FALSE, 'arial', $divisoes_texto, '#515151', '#d3d3d3', '#FFFFFF', FALSE, TRUE, NULL, $tam_fonte);
         }
         $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);
 }
 function renderHTML()
 {
     @session_start();
     $this->pessoa_logada = $_SESSION['id_pessoa'];
     @session_write_close();
     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 (empty($this->ref_cod_turma)) {
         echo '<script>
           alert("Erro ao gerar relatório!\\nNenhuma turma selecionada!");
           window.parent.fechaExpansivel(\'div_dinamico_\'+(window.parent.DOM_divs.length-1));
         </script>';
         return TRUE;
     }
     if ($this->ref_cod_escola) {
         $obj_escola = new clsPmieducarEscola($this->ref_cod_escola);
         $det_escola = $obj_escola->detalhe();
         $this->nm_escola = $det_escola['nome'];
         $obj_instituicao = new clsPmieducarInstituicao($det_escola['ref_cod_instituicao']);
         $det_instituicao = $obj_instituicao->detalhe();
         $this->nm_instituicao = $det_instituicao['nm_instituicao'];
     }
     $obj_calendario = new clsPmieducarEscolaAnoLetivo();
     $lista_calendario = $obj_calendario->lista($this->ref_cod_escola, $this->ano, NULL, NULL, NULL, NULL, NULL, NULL, NULL, 1, NULL);
     $obj_turma = new clsPmieducarTurma($this->ref_cod_turma);
     $det_turma = $obj_turma->detalhe();
     $this->nm_turma = $det_turma['nm_turma'];
     $obj_serie = new clsPmieducarSerie($this->ref_cod_serie);
     $det_serie = $obj_serie->detalhe();
     $this->nm_serie = $det_serie['nm_serie'];
     // Regra da série
     $regraMapper = new RegraAvaliacao_Model_RegraDataMapper();
     $this->regra = $regraMapper->find($det_serie['regra_avaliacao_id']);
     $obj_pessoa = new clsPessoa_($det_turma['ref_cod_regente']);
     $det = $obj_pessoa->detalhe();
     $this->nm_professor = $det['nome'];
     if (!$lista_calendario) {
         echo '<script>
          alert("Escola não possui calendário definido para este ano");
          window.parent.fechaExpansivel(\'div_dinamico_\'+(window.parent.DOM_divs.length-1));
        </script>';
         return TRUE;
     }
     $obj_curso = new clsPmieducarCurso($this->ref_cod_curso);
     $det_curso = $obj_curso->detalhe();
     $this->nm_curso = $det_curso['nm_curso'];
     $obj_tipo_avaliacao = new clsPmieducarTipoAvaliacao($det_curso['ref_cod_tipo_avaliacao']);
     $det_tipo_avaliacao = $obj_tipo_avaliacao->detalhe();
     $conceitual = $det_tipo_avaliacao['conceitual'];
     $obj_matricula_turma = new clsPmieducarMatriculaTurma();
     $obj_matricula_turma->setOrderby('nome_ascii');
     $lst_matricula_turma = $obj_matricula_turma->lista($this->ref_cod_matricula, $this->ref_cod_turma, NULL, NULL, NULL, NULL, NULL, NULL, 1, $this->ref_cod_serie, $this->ref_cod_curso, $this->ref_cod_escola, $this->ref_cod_instituicao, NULL, NULL, array(1, 2, 3), NULL, NULL, $this->ano, NULL, NULL, NULL, NULL, TRUE);
     // Recupera os componentes curriculares da turma
     $componentes = App_Model_IedFinder::getComponentesTurma($this->ref_cod_serie, $this->ref_cod_escola, $this->ref_cod_turma);
     // Recupera a quantidade de módulos e o nome do módulo da escola/turma
     $modulo = App_Model_IedFinder::getModulo($this->ref_cod_escola, $this->ref_cod_curso, $this->ref_cod_turma, $this->ano);
     $nomeModulo = $modulo['nome'][0];
     $modulos = $modulo['total'];
     if ($lst_matricula_turma) {
         $relatorio = new relatorios('Espelho de Notas Ano - ' . $this->ano, 210, FALSE, 'Espelho de Notas', 'A4', "{$this->nm_instituicao}\n{$this->nm_escola}\n{$this->nm_curso}\n{$this->nm_serie} -  Turma: {$this->nm_turma}         " . date('d/m/Y'));
         $relatorio->setMargem(20, 20, 20, 20);
         $relatorio->exibe_produzido_por = FALSE;
         $array_val = array(array(40, 'Cód.'), array(160, 'Nome do Aluno'));
         foreach (range(1, $modulos) as $num) {
             $array_val[] = array(30, $num . $nomeModulo);
         }
         $array_val[] = array(55, 'M.Parcial');
         $array_val[] = array(50, 'Exame');
         $array_val[] = array(50, 'M.Final');
         $array_val[] = array(38, 'Faltas');
         $arrFuncBody = '
     $values = array();
     foreach ($data as $d) {
       $values[] = $d[$index];
     }
     return $values;
   ';
         $arrFunc = create_function('$data, $index', $arrFuncBody);
         foreach ($componentes as $componente) {
             $relatorio->novalinha(array($componente->nome), 0, 16, TRUE, 'arial', array(400), '#515151', '#D3D3D3', '#FFFFFF', FALSE, TRUE);
             $relatorio->novalinha($arrFunc($array_val, 1), 0, 16, TRUE, 'arial', $arrFunc($array_val, 0), '#515151', '#D3D3D3', '#FFFFFF', FALSE, TRUE);
             foreach ($lst_matricula_turma as $matricula) {
                 $codMatricula = $matricula['ref_cod_matricula'];
                 if (!isset($this->boletim[$codMatricula])) {
                     $boletim = new Avaliacao_Service_Boletim(array('matricula' => $codMatricula, 'RegraDataMapper' => $regraMapper));
                 } else {
                     $boletim = $this->boletim[$codMatricula];
                 }
                 $media_final = $media_parcial = $nota_exame = '';
                 $medias = $boletim->getMediasComponentes();
                 $notas = $boletim->getNotasComponentes();
                 if ($boletim->getRegra()->get('tipoPresenca') == RegraAvaliacao_Model_TipoPresenca::GERAL) {
                     $faltas = array_sum(CoreExt_Entity::entityFilterAttr($boletim->getFaltasGerais(), 'id', 'quantidade'));
                 } else {
                     $faltas = $boletim->getFaltasComponentes();
                     if (isset($faltas[$componente->id])) {
                         $faltas = array_sum(CoreExt_Entity::entityFilterAttr($faltas[$componente->id], 'id', 'quantidade'));
                     } else {
                         $faltas = '';
                     }
                 }
                 $etapas = range(1, count($notas[$componente->id]));
                 // Se tiver mais etapas nas notas lançadas, significa que prestou exame
                 if (count($etapas) > $modulos) {
                     array_pop($etapas);
                 }
                 $data = array(array(40, $matricula['ref_cod_aluno']), array(160, $matricula['nome']));
                 foreach ($etapas as $i) {
                     $data[] = array(30, $boletim->getNotaComponente($componente->id, $i)->notaArredondada);
                     $media_parcial = $medias[$componente->id][0]->mediaArredondada;
                     if ($i == $modulos) {
                         $media_final = $media_parcial;
                         $media_parcial = '';
                         $nota_exame = $boletim->getNotaComponente($componente->id, 'Rc')->notaArredondada;
                     }
                 }
                 // Adiciona entradas em branco no array de dados
                 for ($i = 0, $loop = $modulos - count($etapas); $i < $loop; $i++) {
                     $data[] = array(30, '');
                 }
                 $data[] = array(55, $media_parcial);
                 $data[] = array(50, $nota_exame);
                 $data[] = array(50, $media_final);
                 $data[] = array(38, $faltas);
                 $relatorio->novalinha($arrFunc($data, 1), 0, 12, FALSE, 'arial', $arrFunc($data, 0), '#515151', '#D3D3D3', '#FFFFFF', FALSE, TRUE);
             }
             $relatorio->quebraPagina();
         }
         $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);
 }
 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);
 }