From fad656b04202d240c880d1a291834b746327cc8a Mon Sep 17 00:00:00 2001 From: Eriksen Costa Paixão Date: Fri, 30 Apr 2010 19:17:13 +0000 Subject: [PATCH] Atualizado relatório '''Ata de Resultado Final''' para usar {{{Avaliacao_Service_Boletim}}} e classes do módulo ComponenteCurricular e RegraAvaliacao --- ieducar/intranet/educar_relatorio_ata_resultado_final_proc.php | 891 +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- ieducar/lib/App/Model/MatriculaSituacao.php | 2 +- ieducar/modules/Avaliacao/Service/Boletim.php | 3 +++ 3 files changed, 351 insertions(+), 545 deletions(-) diff --git a/ieducar/intranet/educar_relatorio_ata_resultado_final_proc.php b/ieducar/intranet/educar_relatorio_ata_resultado_final_proc.php index 2ec4bf3..2ad8843 100644 --- a/ieducar/intranet/educar_relatorio_ata_resultado_final_proc.php +++ b/ieducar/intranet/educar_relatorio_ata_resultado_final_proc.php @@ -34,6 +34,9 @@ require_once 'include/clsBanco.inc.php'; require_once 'include/pmieducar/geral.inc.php'; require_once 'include/clsPDF.inc.php'; +require_once 'ComponenteCurricular/Model/AnoEscolarDataMapper.php'; +require_once 'Avaliacao/Service/Boletim.php'; + /** * clsIndexBase class. * @@ -69,6 +72,11 @@ class indice extends clsCadastro { var $pessoa_logada; + /** + * @var RegraAvaliacao_Model_Regra + */ + var $regra = NULL; + var $ref_cod_instituicao; var $ref_cod_escola; var $ref_cod_serie; @@ -76,7 +84,7 @@ class indice extends clsCadastro var $ref_cod_curso; var $ref_cod_turma; - var $disciplinas = array(); + var $componentes = array(); var $ano; var $nm_escola; @@ -92,9 +100,8 @@ class indice extends clsCadastro var $campo_assinatura; var $total = 0; - var $array_modulos = array(); var $dias_letivos; - var $falta_ch_globalizada; + var $presencaGeral; function renderHTML() { @@ -111,436 +118,280 @@ class indice extends clsCadastro $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)) + 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)) { - $sql = " - SELECT - cod_matricula, - aprovado, - ref_ref_cod_serie, - (SELECT - nome - FROM - pmieducar.aluno a, - cadastro.pessoa p - WHERE - a.cod_aluno = m.ref_cod_aluno - AND p.idpes = a.ref_idpes - ) as nome - FROM - pmieducar.matricula m, - pmieducar.matricula_turma mt - WHERE - mt.ref_cod_turma = {$this->ref_cod_turma} - AND mt.ref_cod_matricula = m.cod_matricula - AND m.ativo = 1 - AND mt.ativo = 1 - AND aprovado IN (1, 2) - AND ano = {$this->ano} - ORDER BY - ref_ref_cod_serie, nome"; - - //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()) { - $numAlunos = $db->numLinhas(); - - $obj_instituicao = new clsPmieducarInstituicao($this->ref_cod_instituicao); - $det_instituicao = $obj_instituicao->detalhe(); - $this->nm_instituicao = $det_instituicao['nm_instituicao']; - - $obj_escola = new clsPmieducarEscola($this->ref_cod_escola); - $det_escola = $obj_escola->detalhe(); - $this->nm_escola = $det_escola['nome']; - - $obj_escola_serie_disciplina = new clsPmieducarEscolaSerieDisciplina(); - $obj_escola_serie_disciplina->setCamposLista('ref_cod_disciplina'); - $lst_escola_serie_disciplina = $obj_escola_serie_disciplina->lista( - $this->ref_cod_serie, $this->ref_cod_escola, NULL, 1); - - foreach ($lst_escola_serie_disciplina as $escola_serie_disciplina) { - $obj_disciplina = new clsPmieducarDisciplina($escola_serie_disciplina); - $obj_disciplina->setCamposLista('cod_disciplina, carga_horaria, nm_disciplina, abreviatura'); - $det_disciplina = $obj_disciplina->detalhe(); - - $this->disciplinas[$det_disciplina['cod_disciplina']]['nm_disciplina'] = $det_disciplina['nm_disciplina']; - $this->disciplinas[$det_disciplina['cod_disciplina']]['abreviatura'] = $det_disciplina['abreviatura']; - $this->disciplinas[$det_disciplina['cod_disciplina']]['carga_horaria'] = $det_disciplina['carga_horaria']; - } - - $obj_curso = new clsPmieducarCurso($this->ref_cod_curso); - $det_curso = $obj_curso->detalhe(); - - $this->nm_curso = $det_curso['nm_curso']; - $this->falta_ch_globalizada = $det_curso['falta_ch_globalizada']; - - $obj_tipo_avaliacao = new clsPmieducarTipoAvaliacao($det_curso['ref_cod_tipo_avaliacao']); - $det_tipo_avaliacao = $obj_tipo_avaliacao->detalhe(); - $curso_conceitual = $det_tipo_avaliacao['conceitual']; - - $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']; - - $obj_turma = new clsPmieducarTurma($this->ref_cod_turma); - $obj_turma->setCamposLista('nm_turma, hora_inicial'); - $det_turma = $obj_turma->detalhe(); + echo ' + '; - 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'; - } + return TRUE; + } - $this->nm_turma = $det_turma["nm_turma"]; - $this->buscaDiasLetivos(); + $sql = sprintf(" + SELECT + cod_matricula, + aprovado, + ref_ref_cod_serie, + (SELECT + nome + FROM + pmieducar.aluno a, + cadastro.pessoa p + WHERE + a.cod_aluno = m.ref_cod_aluno + AND p.idpes = a.ref_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.ativo = 1 + AND mt.ativo = 1 + AND aprovado IN (1, 2) + AND ano = %d + ORDER BY + 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 ' + '; - asort($this->disciplinas); + return TRUE; + } - $this->pdf = new clsPDF('Ata de Resultado Final - ' . $this->ano, - 'Ata de Resultado Final', 'A4', '', FALSE, FALSE); + $numAlunos = $db->numLinhas(); - $this->pdf->largura = 842.0; - $this->pdf->altura = 595.0; + // Nome da instituição + $obj_instituicao = new clsPmieducarInstituicao($this->ref_cod_instituicao); + $det_instituicao = $obj_instituicao->detalhe(); + $this->nm_instituicao = $det_instituicao['nm_instituicao']; - $this->pdf->OpenFile(); - $this->addCabecalho(); + // Nome da escola + $obj_escola = new clsPmieducarEscola($this->ref_cod_escola); + $det_escola = $obj_escola->detalhe(); + $this->nm_escola = $det_escola['nome']; - $esquerda = 3; - $altura = 30; - $direita = 834; - $tam_texto = 10; - $altura = 130; - - if ($det_curso['padrao_ano_escolar'] == 1) { - $this->array_modulos = array( - array('nm_tipo' => 'Bimestre'), - array('nm_tipo' => 'Bimestre'), - array('nm_tipo' => 'Bimestre'), - array('nm_tipo' => 'Bimestre') - ); - } - else { - $obj_turma_modulo = new clsPmieducarTurmaModulo(); - $lst_turma_modulo = $obj_turma_modulo->lista($this->ref_cod_turma); + // Nome do curso + $obj_curso = new clsPmieducarCurso($this->ref_cod_curso); + $det_curso = $obj_curso->detalhe(); + $this->nm_curso = $det_curso['nm_curso']; - foreach ($lst_turma_modulo as $modulo) { - $obj_modulo = new clsPmieducarModulo($modulo); - $det_modulo = $obj_modulo->detalhe(); - $this->array_modulos[] = $det_modulo; - } - } + // 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']; - $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 - ); - } + // Seleciona a regra de avaliação da série + $regraMapper = new RegraAvaliacao_Model_RegraDataMapper(); + $this->regra = $regraMapper->find($det_serie['regra_avaliacao_id']); - if (is_array($alunos_matriculados) && count($alunos_matriculados)) { - if ($this->falta_ch_globalizada) { - $this->montaAlunoGlobalizados($alunos_matriculados, $det_curso, $curso_conceitual); - } else { - $this->montaAlunoNaoGlobalizados($alunos_matriculados, $det_curso, $curso_conceitual); - } - } + // Carrega as definições de disciplina + $escolaSerieDisciplina = new clsPmieducarEscolaSerieDisciplina(); + $escolaSerieDisciplina = $escolaSerieDisciplina->lista( + $this->ref_cod_serie, $this->ref_cod_escola, NULL, 1); - $this->rodape(); + // Instancia mapper para ano escolar + $anoEscolarMapper = new ComponenteCurricular_Model_AnoEscolarDataMapper(); - $this->pdf->CloseFile(); - $this->get_link = $this->pdf->GetLink(); + foreach ($escolaSerieDisciplina as $disciplina) { + $id = $disciplina['ref_cod_disciplina']; + $anoEscolar = $anoEscolarMapper->find(array($id)); - echo " - "; - - echo " - -
- Se o download não iniciar automaticamente
clique aqui!

- - Para visualizar os arquivos PDF, é necessário instalar o Adobe Acrobat Reader.
- Clique na Imagem para Baixar o instalador

-
- -
-
-
"; - } - else { - echo ' - '; + $cargaHoraria = !is_null($disciplina['carga_horaria']) ? + $disciplina['carga_horaria'] : $anoEscolar->cargaHoraria; - return TRUE; - } + $anoEscolar->componenteCurricular->cargaHoraria = $cargaHoraria; + $this->componentes[$id] = $anoEscolar->componenteCurricular; } - else - { - echo ' - '; - - return TRUE; - } - } - - function rodape() - { - $texto = ''; - $esquerda = 3; - $altura = 22; - $direita = 834; - $tam_texto = 10; - $this->pdf->escreve_relativo('Legenda', $esquerda + 2, $this->page_y += 30, - 150, 100, $fonte, $tam_texto); - if (count($this->disciplinas) > 10) { - $legenda_por_linha = true; - } else { - $legenda_por_linha = false; - } - foreach ($this->disciplinas as $disciplina) { - $texto .= $disciplina['abreviatura'] . ':' . $disciplina['nm_disciplina'] . ' '; - - if ($legenda_por_linha) { - $this->pdf->escreve_relativo($texto, $esquerda + 2, $this->page_y += $altura, - $direita, 200, $fonte, $tam_texto + 1); + $this->presencaGeral = ($this->regra->get('tipoPresenca') == RegraAvaliacao_Model_TipoPresenca::GERAL); - $texto = ""; + $obj_turma = new clsPmieducarTurma($this->ref_cod_turma); + $obj_turma->setCamposLista('nm_turma, hora_inicial'); + $det_turma = $obj_turma->detalhe(); - if ($this->page_y > $this->pdf->altura - 50) { - $texto = ''; - $esquerda = 3; - $altura = 18; - $direita = 834; - $tam_texto = 10; - $this->pdf->ClosePage(); - $this->pdf->OpenPage(); - $this->addCabecalho(); - } - } + if ($det_turma['hora_inicial'] < '12:00') { + $this->nm_turno = 'Matutino'; } - - if (! $legenda_por_linha) { - $this->pdf->escreve_relativo($texto, $esquerda + 2, $this->page_y += $altura, - $direita, 200, $fonte, $tam_texto + 1); + elseif ($det_turma['hora_inicial'] < '18:00') { + $this->nm_turno = 'Vespertino'; } - - if ($this->page_y + $altura * 2 > $this->pdf->altura - 50) { - $texto = ''; - $esquerda = 3; - $altura = 18; - $direita = 834; - $tam_texto = 10; - $this->pdf->ClosePage(); - $this->pdf->OpenPage(); - $this->addCabecalho(); + else { + $this->nm_turno = 'Noturno'; } - $this->pdf->quadrado_relativo($esquerda, $this->page_y += $altura * 2, $direita, 60); + $this->nm_turma = $det_turma["nm_turma"]; + $this->buscaDiasLetivos(); - $this->pdf->escreve_relativo('Observações:', $esquerda + 1, $this->page_y + 1, 150, 200, $fonte, $tam_texto); + asort($this->componentes); - $this->pdf->linha_relativa($esquerda + 200, $this->page_y += 120, 150, 0); + $this->pdf = new clsPDF('Ata de Resultado Final - ' . $this->ano, + 'Ata de Resultado Final', 'A4', '', FALSE, FALSE); - $this->pdf->escreve_relativo('Assinatura do(a) Secretário(a)', $esquerda + 220, - $this->page_y + 2, 150, 200, $fonte, 7); + $this->pdf->largura = 842.0; + $this->pdf->altura = 595.0; - $this->pdf->linha_relativa($esquerda + 450, $this->page_y, 150, 0); + $this->pdf->OpenPage(); + $this->addCabecalho(); - $this->pdf->escreve_relativo('Assinatura do(a) Diretor(a)', $esquerda + 480, - $this->page_y + 2, 150, 200, $fonte, 7); - } + $esquerda = 3; + $direita = 834; + $tam_texto = 10; + $altura = 130; - //monta alunos que a serie nao tem falta globalizada - function montaAlunoNaoGlobalizados($alunos_matriculados, $det_curso, $curso_conceitual) - { - $fonte = 'arial'; - $corTexto = '#000000'; - $esquerda_original = 3; - $espessura_linha = 0.3; - $tam_texto = 9; - $direita = 834; - $altura = 20; + $altura += 50; + $espessura_linha = 0.3; - $obj_serie = new clsPmieducarSerie($this->ref_cod_serie); - $det_serie = $obj_serie->detalhe(); + $alunos_matriculados = array(); - foreach ($alunos_matriculados as $matricula => $aluno) { - $esquerda = $esquerda_original; + 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 + ); + } - $this->pdf->quadrado_relativo($esquerda, $this->page_y, $direita, $altura); + if (is_array($alunos_matriculados) && count($alunos_matriculados)) { + $this->getAlunoNotasFaltasTable($alunos_matriculados, $det_curso, $curso_conceitual); + } - $this->pdf->escreve_relativo($matricula, $esquerda, $this->page_y + 2, 45, - 45, $fonte, $tam_texto, $corTexto, 'center'); + $this->rodape(); - $this->pdf->linha_relativa($esquerda += 45, $this->page_y, 0, $altura); + $this->pdf->CloseFile(); + $this->get_link = $this->pdf->GetLink(); - $espaco_nome = 150; + echo sprintf(" + ", $this->get_link); + + echo sprintf(" + +
+ Se o download não iniciar automaticamente
clique aqui!

+ + Para visualizar os arquivos PDF, é necessário instalar o Adobe Acrobat Reader.
+ Clique na Imagem para Baixar o instalador

+
+ +
+
+
+ ", $this->get_link); + } - $this->pdf->escreve_relativo($aluno['nome'], $esquerda, $this->page_y + 2, - $espaco_nome, 45, $fonte, $tam_texto, $corTexto, 'center'); + function getComponentesTableHeader($esquerda, $espacoComponente) + { + $tam_texto = 9; + $altura = 20; + $tam_texto = 9; + $fonte = 'arial'; + $corTexto = '#000000'; + $carga_global = 0; - $this->pdf->linha_relativa($esquerda += $espaco_nome, $this->page_y, 0, $altura); + $espacoDiv = $this->presencaGeral ? 1 : 2; - $this->pdf->escreve_relativo($aluno['aprovado'] == 1 ? 'Aprovado' : 'Reprovado', - $esquerda, $this->page_y + 4, 45, 45, $fonte, $tam_texto, $corTexto, 'center'); + $componentesTotal = count($this->componentes) + ($this->presencaGeral ? 1 : 0); + $espacoComponentes = ceil($espacoComponente / $componentesTotal); - $this->pdf->linha_relativa($esquerda += 45, $this->page_y, 0, $altura); + foreach ($this->componentes as $componente) { + $carga_global += $componente->cargaHoraria; - $espaco_disciplinas = ceil(($direita - $esquerda) / (count($this->disciplinas))); + $this->pdf->escreve_relativo($componente->abreviatura, $esquerda, + $this->page_y - $altura, $espacoComponentes, 100, $fonte, $tam_texto, $corTexto, 'center'); - foreach ($this->disciplinas as $cod_disciplina => $disciplina) { - $obj_dispensa_disciplina = new clsPmieducarDispensaDisciplina($matricula, - $aluno['ref_cod_serie'], $this->ref_cod_escola, $cod_disciplina); + $this->pdf->escreve_relativo($componente->cargaHoraria . ' hrs', $esquerda, + $this->page_y + 10 - $altura, $espacoComponentes, 50, $fonte, + $tam_texto - 2, $corTexto, 'center'); - if ($obj_dispensa_disciplina->detalhe()) { - $media = $faltas = 'D'; - } - else { - $nota_exame = FALSE; - - if ($curso_conceitual) { - $obj_nota_aluno = new clsPmieducarNotaAluno(); - $obj_nota_aluno->setOrderby('modulo ASC'); - $lst_nota_aluno = $obj_nota_aluno->lista(NULL, NULL, NULL, $aluno['ref_cod_serie'], $this->ref_cod_escola, - $cod_disciplina, $matricula, NULL, NULL, NULL, NULL, NULL, NULL, 1); - - if (is_array($lst_nota_aluno) && count($lst_nota_aluno)) { - foreach ($lst_nota_aluno as $key => $nota) { - $obj_tipo_av_val = new clsPmieducarTipoAvaliacaoValores( - $nota['ref_ref_cod_tipo_avaliacao'], $nota['ref_sequencial'], - NULL, NULL, NULL, NULL, 1); - - $det_tipo_av_val = $obj_tipo_av_val->detalhe(); - $media = $det_tipo_av_val['nome']; - } - } - } else { - if (dbBool($det_serie['ultima_nota_define'])) { - $obj_nota_aluno = new clsPmieducarNotaAluno(); - - $media = $obj_nota_aluno->getUltimaNotaModulo($matricula, $cod_disciplina, - $aluno['ref_cod_serie'], count($this->array_modulos)); - } else { - $obj_nota_aluno = new clsPmieducarNotaAluno(); - $obj_nota_aluno->setOrderby('modulo ASC'); - - $lst_nota_aluno = $obj_nota_aluno->lista(NULL, NULL, NULL, - $aluno['ref_cod_serie'], $this->ref_cod_escola, $cod_disciplina, - $matricula, NULL, NULL, NULL, NULL, NULL, NULL, 1); - - $qtd_modulos = count($this->array_modulos); - $notas = 0; - - if (is_array($lst_nota_aluno) && count($lst_nota_aluno)) { - foreach ($lst_nota_aluno as $key => $nota) { - if ($key < $qtd_modulos) { - $obj_tipo_av_val = new clsPmieducarTipoAvaliacaoValores( - $nota['ref_ref_cod_tipo_avaliacao'], $nota['ref_sequencial'], - NULL, NULL, NULL, NULL); - - $det_tipo_av_val = $obj_tipo_av_val->detalhe(); - $notas += $det_tipo_av_val['valor']; - } else { - $notas += $nota['nota'] * 2; - $nota_exame = true; - } - } - } - - $media = $nota_exame ? $notas / (count($lst_nota_aluno) + 1) : - $notas / count($lst_nota_aluno); - - $obj_media = new clsPmieducarTipoAvaliacaoValores(); - $det_media = $obj_media->lista($det_curso['ref_cod_tipo_avaliacao'], - $det_curso['ref_sequencial'], NULL, NULL, $media, $media); - - if (is_array($det_media) && count($det_media)) { - $det_media = array_shift($det_media); - $media = $det_media['valor']; - $media = str_replace('.', ',', sprintf('%01.1f', $media)); - } - } - } + $this->pdf->escreve_relativo('Nota / Conceito', $esquerda, $this->page_y + 3, + $espacoComponentes / $espacoDiv, 50, $fonte, $tam_texto - 2, $corTexto, 'center'); - $obj_falta = new clsPmieducarFaltaAluno(); - $faltas = $obj_falta->total_faltas_disciplina($matricula, $cod_disciplina, $aluno['ref_cod_serie']); - } + if (!$this->presencaGeral) { + $this->pdf->escreve_relativo('Falta', $esquerda + $espacoComponentes / 2, + $this->page_y + 3, $espacoComponentes / $espacoDiv, 50, $fonte, $tam_texto - 2, + $corTexto, 'center'); + } - $this->pdf->escreve_relativo($media, $esquerda, $this->page_y + 4, - $espaco_disciplinas / 2, 100, $fonte, $tam_texto + 1, $corTexto, 'center'); + $this->pdf->linha_relativa($esquerda, $this->page_y - $altura, 0, $altura * 2); - $this->pdf->linha_relativa($esquerda + $espaco_disciplinas / 2, - $this->page_y, 0, $altura); + $esquerda += $espacoComponentes; + $this->pdf->linha_relativa($esquerda + $espacoComponentes / $espacoDiv, + $this->page_y, 0, $altura); + } - $this->pdf->escreve_relativo($faltas, $esquerda + $espaco_disciplinas / 2, - $this->page_y + 4, $espaco_disciplinas / 2, 100, $fonte, $tam_texto + 1, - $corTexto, 'center'); + if ($this->presencaGeral) { + $this->pdf->linha_relativa($esquerda, $this->page_y - $altura, 0, $altura * 2); - $esquerda += $espaco_disciplinas; + $this->pdf->escreve_relativo('Faltas', $esquerda, $this->page_y, $espacoComponentes, + 50, $fonte, $tam_texto, $corTexto, 'center'); - $this->pdf->linha_relativa($esquerda, $this->page_y, 0, $altura); - } + $this->pdf->linha_relativa($esquerda += $espacoComponentes, + $this->page_y - $altura, 0, $altura * 2); + } - $this->page_y += $altura; + $this->page_y += $altura; - if ($this->page_y > $this->pdf->altura - $altura * 2) { - $this->pdf->ClosePage(); - $this->pdf->OpenPage(); - $this->addCabecalho(); - } - } + return $carga_global; } - //monta alunos que a serie tem falta globalizada - function montaAlunoGlobalizados($alunos_matriculados, $det_curso, $curso_conceitual) + function getAlunoNotasFaltasTable($alunos_matriculados, $det_curso, $curso_conceitual) { $fonte = 'arial'; $corTexto = '#000000'; $esquerda_original = 3; $espessura_linha = 0.3; - $tam_texto = 7; + $tam_texto = 9; $direita = 834; $altura = 20; $obj_serie = new clsPmieducarSerie($this->ref_cod_serie); $det_serie = $obj_serie->detalhe(); + $espacoDiv = $this->presencaGeral ? 1 : 2; + foreach ($alunos_matriculados as $matricula => $aluno) { + $boletim = new Avaliacao_Service_Boletim(array('matricula' => $matricula)); + $medias = $boletim->getMediasComponentes(); + + if ($this->presencaGeral) { + // Soma as faltas do aluno + $faltas = array_sum(CoreExt_Entity::entityFilterAttr( + $boletim->getFaltasGerais(), 'etapa', 'quantidade') + ); + } + else { + $faltas = $boletim->getFaltasComponentes(); + } + $esquerda = $esquerda_original; + // Matrícula $this->pdf->quadrado_relativo($esquerda, $this->page_y, $direita, $altura); $this->pdf->escreve_relativo($matricula, $esquerda, $this->page_y + 2, 45, @@ -548,6 +399,7 @@ class indice extends clsCadastro $this->pdf->linha_relativa($esquerda += 45, $this->page_y, 0, $altura); + // Nome do aluno $espaco_nome = 150; $this->pdf->escreve_relativo($aluno['nome'], $esquerda, $this->page_y + 2, @@ -555,108 +407,67 @@ class indice extends clsCadastro $this->pdf->linha_relativa($esquerda += $espaco_nome, $this->page_y, 0, $altura); - $this->pdf->escreve_relativo($aluno['aprovado'] == 1 ? 'Aprovado' : 'Reprovado', + // Situação da matrícula + $this->pdf->escreve_relativo(App_Model_MatriculaSituacao::getInstance()->getValue($aluno['aprovado']), $esquerda, $this->page_y + 4, 45, 45, $fonte, $tam_texto, $corTexto, 'center'); $this->pdf->linha_relativa($esquerda += 45, $this->page_y, 0, $altura); - $espaco_disciplinas = ceil(($direita - $esquerda) / (count($this->disciplinas) + 1)); - - foreach ($this->disciplinas as $cod_disciplina => $disciplina) { - $obj_dispensa_disciplina = new clsPmieducarDispensaDisciplina($matricula, - $aluno['ref_cod_serie'], $this->ref_cod_escola, $cod_disciplina); + $espacoComponentes = ceil( + ($direita - $esquerda) / (count($this->componentes) + ($this->presencaGeral ? 1 : 0)) + ); - if ($obj_dispensa_disciplina->detalhe()) { - $media = $faltas = 'D'; + // Exibe as médias e faltas do aluno + foreach ($this->componentes as $id => $componente) { + // Se não tem média, foi dispensado do componente + if (!isset($medias[$id])) { + $media = 'D'; + $faltas = 'D'; } else { - $nota_exame = false; - - if ($curso_conceitual) { - $obj_nota_aluno = new clsPmieducarNotaAluno(); - $obj_nota_aluno->setOrderby('modulo ASC'); - $lst_nota_aluno = $obj_nota_aluno->lista(NULL, NULL, - $det_curso['ref_cod_tipo_avaliacao'], $aluno['ref_cod_serie'], - $this->ref_cod_escola, $cod_disciplina, $matricula, NULL, NULL, - NULL, NULL, NULL, NULL, 1); - - if (is_array($lst_nota_aluno) && count($lst_nota_aluno)) { - foreach ($lst_nota_aluno as $key => $nota) { - $obj_tipo_av_val = new clsPmieducarTipoAvaliacaoValores( - $nota['ref_ref_cod_tipo_avaliacao'], $nota['ref_sequencial'], - NULL, NULL, NULL, NULL, 1); - - $det_tipo_av_val = $obj_tipo_av_val->detalhe(); - $media = $det_tipo_av_val['nome']; - } - } - } else { - if (dbBool($det_serie['ultima_nota_define'])) { - $obj_nota_aluno = new clsPmieducarNotaAluno(); - - $media = $obj_nota_aluno->getUltimaNotaModulo($matricula, - $cod_disciplina, $aluno['ref_cod_serie'], count($this->array_modulos)); - } else { - $obj_nota_aluno = new clsPmieducarNotaAluno(); - - $obj_nota_aluno->setOrderby('modulo ASC'); - - $lst_nota_aluno = $obj_nota_aluno->lista(NULL, NULL, - $det_curso['ref_cod_tipo_avaliacao'], $aluno['ref_cod_serie'], - $this->ref_cod_escola, $cod_disciplina, $matricula, NULL, NULL, - NULL, NULL, NULL, NULL, 1); - - $qtd_modulos = count($this->array_modulos); - - $notas = 0; - if (is_array($lst_nota_aluno) && count($lst_nota_aluno)) { - foreach ($lst_nota_aluno as $key => $nota) { - if ($key < $qtd_modulos) { - $obj_tipo_av_val = new clsPmieducarTipoAvaliacaoValores( - $nota['ref_ref_cod_tipo_avaliacao'], $nota['ref_sequencial'], - NULL, NULL, NULL, NULL); - - $det_tipo_av_val = $obj_tipo_av_val->detalhe(); - $notas += $det_tipo_av_val['valor']; - } else { - $notas += $nota['nota'] * 2; - $nota_exame = true; - } - } - } - - $media = $nota_exame ? $notas / (count($lst_nota_aluno) + 1) : - $notas / count($lst_nota_aluno); - - $obj_media = new clsPmieducarTipoAvaliacaoValores(); - $det_media = $obj_media->lista($det_curso['ref_cod_tipo_avaliacao'], - $det_curso['ref_sequencial'], NULL, NULL, $media, $media); - - if (is_array($det_media) && count($det_media)) { - $det_media = array_shift($det_media); - $media = $det_media['valor']; - $media = str_replace('.', ',', sprintf('%01.1f', $media)); - } + $media = $medias[$id][0]; + $media = $media->mediaArredondada; + + if (!$this->presencaGeral) { + if (isset($faltas[$id])) { + $faltas = array_sum(CoreExt_Entity::entityFilterAttr( + $faltas[$id], 'id', 'quantidade') + ); } } + } + + // Média + $this->pdf->escreve_relativo($media, $esquerda, $this->page_y + 4, + $espacoComponentes / $espacoDiv, 50, $fonte, $tam_texto + 1, $corTexto, 'center'); + + $this->pdf->linha_relativa($esquerda + $espacoComponentes / $espacoDiv, + $this->page_y, 0, $altura); - $this->pdf->escreve_relativo($media, $esquerda, $this->page_y + 4, - $espaco_disciplinas, 50, $fonte, $tam_texto + 1, $corTexto, 'center'); - $esquerda += $espaco_disciplinas; - $this->pdf->linha_relativa($esquerda, $this->page_y, 0, $altura); + // Exibe as faltas no componente curricular, caso a presença não seja geral + if (!$this->presencaGeral) { + $this->pdf->escreve_relativo($faltas, $esquerda + $espacoComponentes / $espacoDiv, + $this->page_y + 4, $espacoComponentes / $espacoDiv, 100, $fonte, $tam_texto + 1, + $corTexto, 'center'); } - $obj_falta = new clsPmieducarFaltas(); + $esquerda += $espacoComponentes; + $this->pdf->linha_relativa($esquerda, $this->page_y, 0, $altura); + } + + // Exibe as faltas no total, caso a presença seja geral + if ($this->presencaGeral) { + $this->pdf->escreve_relativo($faltas, $esquerda, + $this->page_y + 4, $espacoComponentes, 50, $fonte, $tam_texto + 1, + $corTexto, 'center'); - $faltas = $obj_falta->somaFaltas($matricula); - $this->pdf->escreve_relativo($faltas ? $faltas : '0', $esquerda, $this->page_y + 4, - $espaco_disciplinas, 50, $fonte, $tam_texto + 1, $corTexto, 'center'); + $esquerda += $espacoComponentes; - $esquerda += $espaco_disciplinas; $this->pdf->linha_relativa($esquerda, $this->page_y, 0, $altura); } $this->page_y += $altura; + if ($this->page_y > $this->pdf->altura - $altura * 2) { $this->pdf->ClosePage(); $this->pdf->OpenPage(); @@ -709,31 +520,36 @@ class indice extends clsCadastro 78, $direita, 80, $fonte, 12, $corTexto, 'center'); $this->pdf->quadrado_relativo($esquerda, $this->page_y += 100, $direita, $altura); + $this->pdf->escreve_relativo('Disciplina', $esquerda + 30, $this->page_y + 1, 150, 50, $fonte, 9, $corTexto, 'center'); + $this->pdf->escreve_relativo('Carga Horária', $esquerda + 35, $this->page_y + 10, 150, 50, $fonte, 7, $corTexto, 'center'); $this->page_y += $altura; + $this->pdf->quadrado_relativo($esquerda, $this->page_y, $direita, $altura); + $this->pdf->escreve_relativo('Matrícula', $esquerda, $this->page_y + 2, 45, 45, $fonte, $tam_texto, $corTexto, 'center'); + $this->pdf->linha_relativa($esquerda += 45, $this->page_y, 0, $altura); $espaco_nome = 150; + $this->pdf->escreve_relativo('Nome do Aluno', $esquerda, $this->page_y + 2, $espaco_nome, 45, $fonte, $tam_texto, $corTexto, 'center'); + $this->pdf->linha_relativa($esquerda += $espaco_nome, $this->page_y, 0, $altura); + $this->pdf->escreve_relativo('Situação', $esquerda, $this->page_y + 2, 45, 45, $fonte, $tam_texto, $corTexto, 'center'); + $this->pdf->linha_relativa($esquerda += 45, $this->page_y, 0, $altura); - if ($this->falta_ch_globalizada) { - $carga_global = $this->montaDisciplinasGlobalizada($esquerda, $direita - $esquerda); - } - else { - $carga_global = $this->montaDisciplinasNaoGlobalizada($esquerda, $direita - $esquerda); - } + // Gera o header da tabela e calcula a carga horária global + $carga_global = $this->getComponentesTableHeader($esquerda, $direita - $esquerda); $nm_curso = sprintf('Curso: %s Série: %s Turma: %s Dias Letivos: %d Carga Global: %s Turno: %s', $this->nm_curso, $this->nm_serie, $this->nm_turma, $this->dias_letivos, $carga_global, $this->nm_turno); @@ -746,88 +562,6 @@ class indice extends clsCadastro $this->page_y += $altura; } - - function montaDisciplinasGlobalizada($esquerda, $espaco_disciplina) - { - $tam_texto = 9; - $altura = 20; - $tam_texto = 9; - $fonte = 'arial'; - $corTexto = '#000000'; - $carga_global = 0; - - $espaco_disciplinas = ceil($espaco_disciplina / (count($this->disciplinas) + 1)); - - foreach ($this->disciplinas as $disciplina) { - $carga_global += $disciplina['carga_horaria']; - - $this->pdf->escreve_relativo($disciplina['abreviatura'], $esquerda, - $this->page_y - $altura, $espaco_disciplinas, 100, $fonte, $tam_texto, - $corTexto, 'center'); - - $this->pdf->escreve_relativo($disciplina['carga_horaria'] . ' hrs', - $esquerda, $this->page_y + 10 - $altura, $espaco_disciplinas, 50, - $fonte, $tam_texto - 2, $corTexto, 'center'); - - $this->pdf->escreve_relativo('Nota / Conceito', $esquerda, $this->page_y + 3, - $espaco_disciplinas, 50, $fonte, $tam_texto - 2, $corTexto, 'center'); - - $this->pdf->linha_relativa($esquerda, $this->page_y - $altura, 0, $altura * 2); - - $esquerda += $espaco_disciplinas; - } - - $this->pdf->linha_relativa($esquerda, $this->page_y - $altura, 0, $altura * 2); - $this->pdf->escreve_relativo('Faltas', $esquerda, $this->page_y, $espaco_disciplinas, - 50, $fonte, $tam_texto, $corTexto, 'center'); - - $this->pdf->linha_relativa($esquerda += $espaco_disciplinas, - $this->page_y - $altura, 0, $altura * 2); - - $this->page_y += $altura; - - return $carga_global; - } - - function montaDisciplinasNaoGlobalizada($esquerda, $espaco_disciplina) - { - $espaco_disciplinas = ceil($espaco_disciplina / (count($this->disciplinas))); - - $tam_texto = 9; - $altura = 20; - $tam_texto = 9; - $fonte = 'arial'; - $corTexto = '#000000'; - $carga_global = 0; - - foreach ($this->disciplinas as $disciplina) { - $carga_global += $disciplina['carga_horaria']; - - $this->pdf->escreve_relativo($disciplina['abreviatura'], $esquerda, - $this->page_y - $altura, $espaco_disciplinas, 100, $fonte, $tam_texto, $corTexto, 'center'); - - $this->pdf->escreve_relativo($disciplina['carga_horaria'] . ' hrs', $esquerda, - $this->page_y + 10 - $altura, $espaco_disciplinas, 50, $fonte, - $tam_texto - 2, $corTexto, 'center'); - - $this->pdf->escreve_relativo('Nota / Conceito', $esquerda, $this->page_y + 3, - $espaco_disciplinas / 2, 50, $fonte, $tam_texto - 2, $corTexto, 'center'); - - $this->pdf->escreve_relativo('Falta', $esquerda + $espaco_disciplinas / 2, - $this->page_y + 3, $espaco_disciplinas / 2, 50, $fonte, $tam_texto - 2, - $corTexto, 'center'); - - $this->pdf->linha_relativa($esquerda, $this->page_y - $altura, 0, $altura * 2); - - $this->pdf->linha_relativa($esquerda + $espaco_disciplinas / 2, $this->page_y, 0, $altura); - - $esquerda += $espaco_disciplinas; - } - $this->page_y += $altura; - - return $carga_global; - } - function buscaDiasLetivos() { $obj_calendario = new clsPmieducarEscolaAnoLetivo(); @@ -847,13 +581,13 @@ class indice extends clsCadastro $inicio = $lst_ano_letivo_modulo['0']; $fim = $lst_ano_letivo_modulo[count($lst_ano_letivo_modulo) - 1]; - $mes_inicial = explode("-", $inicio['data_inicio']); + $mes_inicial = explode('-', $inicio['data_inicio']); $mes_inicial = $mes_inicial[1]; $dia_inicial = $mes_inicial[2]; - $mes_final = explode("-", $fim['data_fim']); - $mes_final = $mes_final[1]; - $dia_final = $mes_final[2]; + $mes_final = explode('-', $fim['data_fim']); + $mes_final = $mes_final[1]; + $dia_final = $mes_final[2]; } for ($mes = $mes_inicial;$mes <= $mes_final; $mes++) { @@ -911,11 +645,11 @@ class indice extends clsCadastro } if ($DiaSemana != 0 && $DiaSemana != 6) { - if (!(key_exists($dia,$dias_mes) && $dias_mes[$dia] == strtolower('n'))) { + if (!(key_exists($dia, $dias_mes) && $dias_mes[$dia] == strtolower('n'))) { $totalDiasUteis++; } } - elseif (key_exists($dia,$dias_mes) && $dias_mes[$dia] == strtolower('e')) { + elseif (key_exists($dia, $dias_mes) && $dias_mes[$dia] == strtolower('e')) { $totalDiasUteis++; } @@ -926,6 +660,75 @@ class indice extends clsCadastro $this->dias_letivos = $totalDiasUteis; } + function rodape() + { + $texto = ''; + $esquerda = 3; + $altura = 22; + $direita = 834; + $tam_texto = 10; + $this->pdf->escreve_relativo('Legenda', $esquerda + 2, $this->page_y += 30, + 150, 100, $fonte, $tam_texto); + + if (count($this->componentes) > 10) { + $legenda_por_linha = TRUE; + } else { + $legenda_por_linha = FALSE; + } + + foreach ($this->componentes as $componente) { + $texto .= $componente->abreviatura . ': ' . $componente->nome . ' '; + + if ($legenda_por_linha) { + $this->pdf->escreve_relativo($texto, $esquerda + 2, $this->page_y += $altura, + $direita, 200, $fonte, $tam_texto + 1); + + $texto = ''; + + if ($this->page_y > $this->pdf->altura - 50) { + $texto = ''; + $esquerda = 3; + $altura = 18; + $direita = 834; + $tam_texto = 10; + $this->pdf->ClosePage(); + $this->pdf->OpenPage(); + $this->addCabecalho(); + } + } + } + + if (! $legenda_por_linha) { + $this->pdf->escreve_relativo($texto, $esquerda + 2, $this->page_y += $altura, + $direita, 200, $fonte, $tam_texto + 1); + } + + if ($this->page_y + $altura * 2 > $this->pdf->altura - 50) { + $texto = ''; + $esquerda = 3; + $altura = 18; + $direita = 834; + $tam_texto = 10; + $this->pdf->ClosePage(); + $this->pdf->OpenPage(); + $this->addCabecalho(); + } + + $this->pdf->quadrado_relativo($esquerda, $this->page_y += $altura * 2, $direita, 60); + + $this->pdf->escreve_relativo('Observações:', $esquerda + 1, $this->page_y + 1, 150, 200, $fonte, $tam_texto); + + $this->pdf->linha_relativa($esquerda + 200, $this->page_y += 120, 150, 0); + + $this->pdf->escreve_relativo('Assinatura do(a) Secretário(a)', $esquerda + 220, + $this->page_y + 2, 150, 200, $fonte, 7); + + $this->pdf->linha_relativa($esquerda + 450, $this->page_y, 150, 0); + + $this->pdf->escreve_relativo('Assinatura do(a) Diretor(a)', $esquerda + 480, + $this->page_y + 2, 150, 200, $fonte, 7); + } + function Editar() { return FALSE; diff --git a/ieducar/lib/App/Model/MatriculaSituacao.php b/ieducar/lib/App/Model/MatriculaSituacao.php index 4d98636..3660766 100644 --- a/ieducar/lib/App/Model/MatriculaSituacao.php +++ b/ieducar/lib/App/Model/MatriculaSituacao.php @@ -54,7 +54,7 @@ class App_Model_MatriculaSituacao extends CoreExt_Enum protected $_data = array( self::APROVADO => 'Aprovado', - self::REPROVADO => 'Reprovado', + self::REPROVADO => 'Retido', self::EM_ANDAMENTO => 'Em andamento', self::TRANSFERIDO => 'Transferido', self::RECLASSIFICADO => 'Reclassificado', diff --git a/ieducar/modules/Avaliacao/Service/Boletim.php b/ieducar/modules/Avaliacao/Service/Boletim.php index 83c1076..4e34eb6 100644 --- a/ieducar/modules/Avaliacao/Service/Boletim.php +++ b/ieducar/modules/Avaliacao/Service/Boletim.php @@ -49,6 +49,9 @@ require_once 'App/Model/MatriculaSituacao.php'; * @since Classe disponível desde a versão 1.1.0 * @todo Substituir todos os usos literais de 'Rc' e 'An' por constantes * ou por um novo CoreExt_Enum + * @todo Criar método que retorna o conjunto de faltas de acordo com o + * tipo de presença da regra, refatorando a série de condicionais + * existentes em métodos como getSituacaoFaltas() * @version @@package_version@@ */ class Avaliacao_Service_Boletim implements CoreExt_Configurable -- libgit2 0.21.2