Commit fad656b04202d240c880d1a291834b746327cc8a

Authored by Eriksen Costa Paixão
1 parent f376aeba
Exists in master

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
@@ -34,6 +34,9 @@ require_once 'include/clsBanco.inc.php'; @@ -34,6 +34,9 @@ require_once 'include/clsBanco.inc.php';
34 require_once 'include/pmieducar/geral.inc.php'; 34 require_once 'include/pmieducar/geral.inc.php';
35 require_once 'include/clsPDF.inc.php'; 35 require_once 'include/clsPDF.inc.php';
36 36
  37 +require_once 'ComponenteCurricular/Model/AnoEscolarDataMapper.php';
  38 +require_once 'Avaliacao/Service/Boletim.php';
  39 +
37 /** 40 /**
38 * clsIndexBase class. 41 * clsIndexBase class.
39 * 42 *
@@ -69,6 +72,11 @@ class indice extends clsCadastro @@ -69,6 +72,11 @@ class indice extends clsCadastro
69 { 72 {
70 var $pessoa_logada; 73 var $pessoa_logada;
71 74
  75 + /**
  76 + * @var RegraAvaliacao_Model_Regra
  77 + */
  78 + var $regra = NULL;
  79 +
72 var $ref_cod_instituicao; 80 var $ref_cod_instituicao;
73 var $ref_cod_escola; 81 var $ref_cod_escola;
74 var $ref_cod_serie; 82 var $ref_cod_serie;
@@ -76,7 +84,7 @@ class indice extends clsCadastro @@ -76,7 +84,7 @@ class indice extends clsCadastro
76 var $ref_cod_curso; 84 var $ref_cod_curso;
77 var $ref_cod_turma; 85 var $ref_cod_turma;
78 86
79 - var $disciplinas = array(); 87 + var $componentes = array();
80 88
81 var $ano; 89 var $ano;
82 var $nm_escola; 90 var $nm_escola;
@@ -92,9 +100,8 @@ class indice extends clsCadastro @@ -92,9 +100,8 @@ class indice extends clsCadastro
92 var $campo_assinatura; 100 var $campo_assinatura;
93 var $total = 0; 101 var $total = 0;
94 102
95 - var $array_modulos = array();  
96 var $dias_letivos; 103 var $dias_letivos;
97 - var $falta_ch_globalizada; 104 + var $presencaGeral;
98 105
99 function renderHTML() 106 function renderHTML()
100 { 107 {
@@ -111,436 +118,280 @@ class indice extends clsCadastro @@ -111,436 +118,280 @@ class indice extends clsCadastro
111 $fonte = 'arial'; 118 $fonte = 'arial';
112 $corTexto = '#000000'; 119 $corTexto = '#000000';
113 120
114 - if (is_numeric($this->ref_cod_instituicao) && is_numeric($this->ref_cod_escola) &&  
115 - is_numeric($this->ref_cod_curso) && is_numeric($this->ref_cod_serie) &&  
116 - is_numeric($this->ref_cod_turma) && is_numeric($this->ano)) 121 + if (!is_numeric($this->ref_cod_instituicao) || !is_numeric($this->ref_cod_escola) ||
  122 + !is_numeric($this->ref_cod_curso) || !is_numeric($this->ref_cod_serie) ||
  123 + !is_numeric($this->ref_cod_turma) || !is_numeric($this->ano))
117 { 124 {
118 - $sql = "  
119 - SELECT  
120 - cod_matricula,  
121 - aprovado,  
122 - ref_ref_cod_serie,  
123 - (SELECT  
124 - nome  
125 - FROM  
126 - pmieducar.aluno a,  
127 - cadastro.pessoa p  
128 - WHERE  
129 - a.cod_aluno = m.ref_cod_aluno  
130 - AND p.idpes = a.ref_idpes  
131 - ) as nome  
132 - FROM  
133 - pmieducar.matricula m,  
134 - pmieducar.matricula_turma mt  
135 - WHERE  
136 - mt.ref_cod_turma = {$this->ref_cod_turma}  
137 - AND mt.ref_cod_matricula = m.cod_matricula  
138 - AND m.ativo = 1  
139 - AND mt.ativo = 1  
140 - AND aprovado IN (1, 2)  
141 - AND ano = {$this->ano}  
142 - ORDER BY  
143 - ref_ref_cod_serie, nome";  
144 -  
145 - //verificar se a turma é multiseriada  
146 - $obj_turma = new clsPmieducarTurma($this->ref_cod_turma);  
147 - $det_turma = $obj_turma->detalhe();  
148 - $ref_ref_cod_serie_mult = $det_turma['ref_ref_cod_serie_mult'];  
149 -  
150 - $db = new clsBanco();  
151 - $db->Consulta($sql);  
152 -  
153 - if ($db->numLinhas()) {  
154 - $numAlunos = $db->numLinhas();  
155 -  
156 - $obj_instituicao = new clsPmieducarInstituicao($this->ref_cod_instituicao);  
157 - $det_instituicao = $obj_instituicao->detalhe();  
158 - $this->nm_instituicao = $det_instituicao['nm_instituicao'];  
159 -  
160 - $obj_escola = new clsPmieducarEscola($this->ref_cod_escola);  
161 - $det_escola = $obj_escola->detalhe();  
162 - $this->nm_escola = $det_escola['nome'];  
163 -  
164 - $obj_escola_serie_disciplina = new clsPmieducarEscolaSerieDisciplina();  
165 - $obj_escola_serie_disciplina->setCamposLista('ref_cod_disciplina');  
166 - $lst_escola_serie_disciplina = $obj_escola_serie_disciplina->lista(  
167 - $this->ref_cod_serie, $this->ref_cod_escola, NULL, 1);  
168 -  
169 - foreach ($lst_escola_serie_disciplina as $escola_serie_disciplina) {  
170 - $obj_disciplina = new clsPmieducarDisciplina($escola_serie_disciplina);  
171 - $obj_disciplina->setCamposLista('cod_disciplina, carga_horaria, nm_disciplina, abreviatura');  
172 - $det_disciplina = $obj_disciplina->detalhe();  
173 -  
174 - $this->disciplinas[$det_disciplina['cod_disciplina']]['nm_disciplina'] = $det_disciplina['nm_disciplina'];  
175 - $this->disciplinas[$det_disciplina['cod_disciplina']]['abreviatura'] = $det_disciplina['abreviatura'];  
176 - $this->disciplinas[$det_disciplina['cod_disciplina']]['carga_horaria'] = $det_disciplina['carga_horaria'];  
177 - }  
178 -  
179 - $obj_curso = new clsPmieducarCurso($this->ref_cod_curso);  
180 - $det_curso = $obj_curso->detalhe();  
181 -  
182 - $this->nm_curso = $det_curso['nm_curso'];  
183 - $this->falta_ch_globalizada = $det_curso['falta_ch_globalizada'];  
184 -  
185 - $obj_tipo_avaliacao = new clsPmieducarTipoAvaliacao($det_curso['ref_cod_tipo_avaliacao']);  
186 - $det_tipo_avaliacao = $obj_tipo_avaliacao->detalhe();  
187 - $curso_conceitual = $det_tipo_avaliacao['conceitual'];  
188 -  
189 - $obj_serie = new clsPmieducarSerie($this->ref_cod_serie);  
190 - $obj_serie->setOrderby('nm_serie');  
191 - $det_serie = $obj_serie->detalhe();  
192 - $this->nm_serie = $det_serie['nm_serie'];  
193 -  
194 - $obj_turma = new clsPmieducarTurma($this->ref_cod_turma);  
195 - $obj_turma->setCamposLista('nm_turma, hora_inicial');  
196 - $det_turma = $obj_turma->detalhe(); 125 + echo '
  126 + <script>
  127 + alert("A turma não possui nenhum aluno com situação final definida");
  128 + window.parent.fechaExpansivel(\'div_dinamico_\'+(window.parent.DOM_divs.length-1));
  129 + </script>';
197 130
198 - if ($det_turma['hora_inicial'] < '12:00') {  
199 - $this->nm_turno = 'Matutino';  
200 - }  
201 - elseif ($det_turma['hora_inicial'] < '18:00') {  
202 - $this->nm_turno = 'Vespertino';  
203 - }  
204 - else {  
205 - $this->nm_turno = 'Noturno';  
206 - } 131 + return TRUE;
  132 + }
207 133
208 - $this->nm_turma = $det_turma["nm_turma"];  
209 - $this->buscaDiasLetivos(); 134 + $sql = sprintf("
  135 + SELECT
  136 + cod_matricula,
  137 + aprovado,
  138 + ref_ref_cod_serie,
  139 + (SELECT
  140 + nome
  141 + FROM
  142 + pmieducar.aluno a,
  143 + cadastro.pessoa p
  144 + WHERE
  145 + a.cod_aluno = m.ref_cod_aluno
  146 + AND p.idpes = a.ref_idpes
  147 + ) AS nome
  148 + FROM
  149 + pmieducar.matricula m,
  150 + pmieducar.matricula_turma mt
  151 + WHERE
  152 + mt.ref_cod_turma = %d
  153 + AND mt.ref_cod_matricula = m.cod_matricula
  154 + AND m.ativo = 1
  155 + AND mt.ativo = 1
  156 + AND aprovado IN (1, 2)
  157 + AND ano = %d
  158 + ORDER BY
  159 + ref_ref_cod_serie, nome", $this->ref_cod_turma, $this->ano);
  160 +
  161 + //verificar se a turma é multiseriada
  162 + $obj_turma = new clsPmieducarTurma($this->ref_cod_turma);
  163 + $det_turma = $obj_turma->detalhe();
  164 + $ref_ref_cod_serie_mult = $det_turma['ref_ref_cod_serie_mult'];
  165 +
  166 + $db = new clsBanco();
  167 + $db->Consulta($sql);
  168 +
  169 + if (!$db->numLinhas()) {
  170 + echo '
  171 + <script>
  172 + alert("A turma não possui nenhum aluno com situação final definida");
  173 + window.parent.fechaExpansivel(\'div_dinamico_\'+(window.parent.DOM_divs.length - 1));
  174 + </script>';
210 175
211 - asort($this->disciplinas); 176 + return TRUE;
  177 + }
212 178
213 - $this->pdf = new clsPDF('Ata de Resultado Final - ' . $this->ano,  
214 - 'Ata de Resultado Final', 'A4', '', FALSE, FALSE); 179 + $numAlunos = $db->numLinhas();
215 180
216 - $this->pdf->largura = 842.0;  
217 - $this->pdf->altura = 595.0; 181 + // Nome da instituição
  182 + $obj_instituicao = new clsPmieducarInstituicao($this->ref_cod_instituicao);
  183 + $det_instituicao = $obj_instituicao->detalhe();
  184 + $this->nm_instituicao = $det_instituicao['nm_instituicao'];
218 185
219 - $this->pdf->OpenFile();  
220 - $this->addCabecalho(); 186 + // Nome da escola
  187 + $obj_escola = new clsPmieducarEscola($this->ref_cod_escola);
  188 + $det_escola = $obj_escola->detalhe();
  189 + $this->nm_escola = $det_escola['nome'];
221 190
222 - $esquerda = 3;  
223 - $altura = 30;  
224 - $direita = 834;  
225 - $tam_texto = 10;  
226 - $altura = 130;  
227 -  
228 - if ($det_curso['padrao_ano_escolar'] == 1) {  
229 - $this->array_modulos = array(  
230 - array('nm_tipo' => 'Bimestre'),  
231 - array('nm_tipo' => 'Bimestre'),  
232 - array('nm_tipo' => 'Bimestre'),  
233 - array('nm_tipo' => 'Bimestre')  
234 - );  
235 - }  
236 - else {  
237 - $obj_turma_modulo = new clsPmieducarTurmaModulo();  
238 - $lst_turma_modulo = $obj_turma_modulo->lista($this->ref_cod_turma); 191 + // Nome do curso
  192 + $obj_curso = new clsPmieducarCurso($this->ref_cod_curso);
  193 + $det_curso = $obj_curso->detalhe();
  194 + $this->nm_curso = $det_curso['nm_curso'];
239 195
240 - foreach ($lst_turma_modulo as $modulo) {  
241 - $obj_modulo = new clsPmieducarModulo($modulo);  
242 - $det_modulo = $obj_modulo->detalhe();  
243 - $this->array_modulos[] = $det_modulo;  
244 - }  
245 - } 196 + // Série
  197 + $obj_serie = new clsPmieducarSerie($this->ref_cod_serie);
  198 + $obj_serie->setOrderby('nm_serie');
  199 + $det_serie = $obj_serie->detalhe();
  200 + $this->nm_serie = $det_serie['nm_serie'];
246 201
247 - $altura += 50;  
248 - $espessura_linha = 0.3;  
249 -  
250 - $alunos_matriculados = array();  
251 - while ($db->ProximoRegistro()) {  
252 - list($cod_matricula, $aprovado, $ref_cod_serie, $nome) = $db->Tupla();  
253 - $alunos_matriculados[$cod_matricula] =  
254 - array(  
255 - 'aprovado' => $aprovado,  
256 - 'nome' => $nome,  
257 - 'ref_cod_serie' => $ref_cod_serie  
258 - );  
259 - } 202 + // Seleciona a regra de avaliação da série
  203 + $regraMapper = new RegraAvaliacao_Model_RegraDataMapper();
  204 + $this->regra = $regraMapper->find($det_serie['regra_avaliacao_id']);
260 205
261 - if (is_array($alunos_matriculados) && count($alunos_matriculados)) {  
262 - if ($this->falta_ch_globalizada) {  
263 - $this->montaAlunoGlobalizados($alunos_matriculados, $det_curso, $curso_conceitual);  
264 - } else {  
265 - $this->montaAlunoNaoGlobalizados($alunos_matriculados, $det_curso, $curso_conceitual);  
266 - }  
267 - } 206 + // Carrega as definições de disciplina
  207 + $escolaSerieDisciplina = new clsPmieducarEscolaSerieDisciplina();
  208 + $escolaSerieDisciplina = $escolaSerieDisciplina->lista(
  209 + $this->ref_cod_serie, $this->ref_cod_escola, NULL, 1);
268 210
269 - $this->rodape(); 211 + // Instancia mapper para ano escolar
  212 + $anoEscolarMapper = new ComponenteCurricular_Model_AnoEscolarDataMapper();
270 213
271 - $this->pdf->CloseFile();  
272 - $this->get_link = $this->pdf->GetLink(); 214 + foreach ($escolaSerieDisciplina as $disciplina) {
  215 + $id = $disciplina['ref_cod_disciplina'];
  216 + $anoEscolar = $anoEscolarMapper->find(array($id));
273 217
274 - echo "  
275 - <script>  
276 - window.onload=function() {  
277 - parent.EscondeDiv('LoadImprimir');  
278 - window.location='download.php?filename=".$this->get_link."'  
279 - }  
280 - </script>";  
281 -  
282 - echo "  
283 - <html>  
284 - <center>  
285 - 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>  
286 - <span style='font-size: 10px;'>  
287 - Para visualizar os arquivos PDF, é necessário instalar o Adobe Acrobat Reader.<br>  
288 - Clique na Imagem para Baixar o instalador<br><br>  
289 - <a href=\"http://www.adobe.com.br/products/acrobat/readstep2.html\" target=\"new\"><br>  
290 - <img src=\"imagens/acrobat.gif\" width=\"88\" height=\"31\" border=\"0\">  
291 - </a>  
292 - </span>  
293 - </center>";  
294 - }  
295 - else {  
296 - echo '  
297 - <script>  
298 - alert("A turma não possui nenhum aluno com situação final definida");  
299 - window.parent.fechaExpansivel(\'div_dinamico_\'+(window.parent.DOM_divs.length - 1));  
300 - </script>'; 218 + $cargaHoraria = !is_null($disciplina['carga_horaria']) ?
  219 + $disciplina['carga_horaria'] : $anoEscolar->cargaHoraria;
301 220
302 - return TRUE;  
303 - } 221 + $anoEscolar->componenteCurricular->cargaHoraria = $cargaHoraria;
  222 + $this->componentes[$id] = $anoEscolar->componenteCurricular;
304 } 223 }
305 - else  
306 - {  
307 - echo '  
308 - <script>  
309 - alert("A turma não possui nenhum aluno com situação final definida");  
310 - window.parent.fechaExpansivel(\'div_dinamico_\'+(window.parent.DOM_divs.length-1));  
311 - </script>';  
312 -  
313 - return TRUE;  
314 - }  
315 - }  
316 -  
317 - function rodape()  
318 - {  
319 - $texto = '';  
320 - $esquerda = 3;  
321 - $altura = 22;  
322 - $direita = 834;  
323 - $tam_texto = 10;  
324 - $this->pdf->escreve_relativo('Legenda', $esquerda + 2, $this->page_y += 30,  
325 - 150, 100, $fonte, $tam_texto);  
326 224
327 - if (count($this->disciplinas) > 10) {  
328 - $legenda_por_linha = true;  
329 - } else {  
330 - $legenda_por_linha = false;  
331 - }  
332 225
333 - foreach ($this->disciplinas as $disciplina) {  
334 - $texto .= $disciplina['abreviatura'] . ':' . $disciplina['nm_disciplina'] . ' ';  
335 -  
336 - if ($legenda_por_linha) {  
337 - $this->pdf->escreve_relativo($texto, $esquerda + 2, $this->page_y += $altura,  
338 - $direita, 200, $fonte, $tam_texto + 1); 226 + $this->presencaGeral = ($this->regra->get('tipoPresenca') == RegraAvaliacao_Model_TipoPresenca::GERAL);
339 227
340 - $texto = ""; 228 + $obj_turma = new clsPmieducarTurma($this->ref_cod_turma);
  229 + $obj_turma->setCamposLista('nm_turma, hora_inicial');
  230 + $det_turma = $obj_turma->detalhe();
341 231
342 - if ($this->page_y > $this->pdf->altura - 50) {  
343 - $texto = '';  
344 - $esquerda = 3;  
345 - $altura = 18;  
346 - $direita = 834;  
347 - $tam_texto = 10;  
348 - $this->pdf->ClosePage();  
349 - $this->pdf->OpenPage();  
350 - $this->addCabecalho();  
351 - }  
352 - } 232 + if ($det_turma['hora_inicial'] < '12:00') {
  233 + $this->nm_turno = 'Matutino';
353 } 234 }
354 -  
355 - if (! $legenda_por_linha) {  
356 - $this->pdf->escreve_relativo($texto, $esquerda + 2, $this->page_y += $altura,  
357 - $direita, 200, $fonte, $tam_texto + 1); 235 + elseif ($det_turma['hora_inicial'] < '18:00') {
  236 + $this->nm_turno = 'Vespertino';
358 } 237 }
359 -  
360 - if ($this->page_y + $altura * 2 > $this->pdf->altura - 50) {  
361 - $texto = '';  
362 - $esquerda = 3;  
363 - $altura = 18;  
364 - $direita = 834;  
365 - $tam_texto = 10;  
366 - $this->pdf->ClosePage();  
367 - $this->pdf->OpenPage();  
368 - $this->addCabecalho(); 238 + else {
  239 + $this->nm_turno = 'Noturno';
369 } 240 }
370 241
371 - $this->pdf->quadrado_relativo($esquerda, $this->page_y += $altura * 2, $direita, 60); 242 + $this->nm_turma = $det_turma["nm_turma"];
  243 + $this->buscaDiasLetivos();
372 244
373 - $this->pdf->escreve_relativo('Observações:', $esquerda + 1, $this->page_y + 1, 150, 200, $fonte, $tam_texto); 245 + asort($this->componentes);
374 246
375 - $this->pdf->linha_relativa($esquerda + 200, $this->page_y += 120, 150, 0); 247 + $this->pdf = new clsPDF('Ata de Resultado Final - ' . $this->ano,
  248 + 'Ata de Resultado Final', 'A4', '', FALSE, FALSE);
376 249
377 - $this->pdf->escreve_relativo('Assinatura do(a) Secretário(a)', $esquerda + 220,  
378 - $this->page_y + 2, 150, 200, $fonte, 7); 250 + $this->pdf->largura = 842.0;
  251 + $this->pdf->altura = 595.0;
379 252
380 - $this->pdf->linha_relativa($esquerda + 450, $this->page_y, 150, 0); 253 + $this->pdf->OpenPage();
  254 + $this->addCabecalho();
381 255
382 - $this->pdf->escreve_relativo('Assinatura do(a) Diretor(a)', $esquerda + 480,  
383 - $this->page_y + 2, 150, 200, $fonte, 7);  
384 - } 256 + $esquerda = 3;
  257 + $direita = 834;
  258 + $tam_texto = 10;
  259 + $altura = 130;
385 260
386 - //monta alunos que a serie nao tem falta globalizada  
387 - function montaAlunoNaoGlobalizados($alunos_matriculados, $det_curso, $curso_conceitual)  
388 - {  
389 - $fonte = 'arial';  
390 - $corTexto = '#000000';  
391 - $esquerda_original = 3;  
392 - $espessura_linha = 0.3;  
393 - $tam_texto = 9;  
394 - $direita = 834;  
395 - $altura = 20; 261 + $altura += 50;
  262 + $espessura_linha = 0.3;
396 263
397 - $obj_serie = new clsPmieducarSerie($this->ref_cod_serie);  
398 - $det_serie = $obj_serie->detalhe(); 264 + $alunos_matriculados = array();
399 265
400 - foreach ($alunos_matriculados as $matricula => $aluno) {  
401 - $esquerda = $esquerda_original; 266 + while ($db->ProximoRegistro()) {
  267 + list($cod_matricula, $aprovado, $ref_cod_serie, $nome) = $db->Tupla();
  268 + $alunos_matriculados[$cod_matricula] =
  269 + array(
  270 + 'aprovado' => $aprovado,
  271 + 'nome' => $nome,
  272 + 'ref_cod_serie' => $ref_cod_serie
  273 + );
  274 + }
402 275
403 - $this->pdf->quadrado_relativo($esquerda, $this->page_y, $direita, $altura); 276 + if (is_array($alunos_matriculados) && count($alunos_matriculados)) {
  277 + $this->getAlunoNotasFaltasTable($alunos_matriculados, $det_curso, $curso_conceitual);
  278 + }
404 279
405 - $this->pdf->escreve_relativo($matricula, $esquerda, $this->page_y + 2, 45,  
406 - 45, $fonte, $tam_texto, $corTexto, 'center'); 280 + $this->rodape();
407 281
408 - $this->pdf->linha_relativa($esquerda += 45, $this->page_y, 0, $altura); 282 + $this->pdf->CloseFile();
  283 + $this->get_link = $this->pdf->GetLink();
409 284
410 - $espaco_nome = 150; 285 + echo sprintf("
  286 + <script>
  287 + window.onload=function() {
  288 + parent.EscondeDiv('LoadImprimir');
  289 + window.location='download.php?filename=%s'
  290 + }
  291 + </script>", $this->get_link);
  292 +
  293 + echo sprintf("
  294 + <html>
  295 + <center>
  296 + 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>
  297 + <span style='font-size: 10px;'>
  298 + Para visualizar os arquivos PDF, é necessário instalar o Adobe Acrobat Reader.<br>
  299 + Clique na Imagem para Baixar o instalador<br><br>
  300 + <a href=\"http://www.adobe.com.br/products/acrobat/readstep2.html\" target=\"new\"><br>
  301 + <img src=\"imagens/acrobat.gif\" width=\"88\" height=\"31\" border=\"0\">
  302 + </a>
  303 + </span>
  304 + </center>
  305 + </html>", $this->get_link);
  306 + }
411 307
412 - $this->pdf->escreve_relativo($aluno['nome'], $esquerda, $this->page_y + 2,  
413 - $espaco_nome, 45, $fonte, $tam_texto, $corTexto, 'center'); 308 + function getComponentesTableHeader($esquerda, $espacoComponente)
  309 + {
  310 + $tam_texto = 9;
  311 + $altura = 20;
  312 + $tam_texto = 9;
  313 + $fonte = 'arial';
  314 + $corTexto = '#000000';
  315 + $carga_global = 0;
414 316
415 - $this->pdf->linha_relativa($esquerda += $espaco_nome, $this->page_y, 0, $altura); 317 + $espacoDiv = $this->presencaGeral ? 1 : 2;
416 318
417 - $this->pdf->escreve_relativo($aluno['aprovado'] == 1 ? 'Aprovado' : 'Reprovado',  
418 - $esquerda, $this->page_y + 4, 45, 45, $fonte, $tam_texto, $corTexto, 'center'); 319 + $componentesTotal = count($this->componentes) + ($this->presencaGeral ? 1 : 0);
  320 + $espacoComponentes = ceil($espacoComponente / $componentesTotal);
419 321
420 - $this->pdf->linha_relativa($esquerda += 45, $this->page_y, 0, $altura); 322 + foreach ($this->componentes as $componente) {
  323 + $carga_global += $componente->cargaHoraria;
421 324
422 - $espaco_disciplinas = ceil(($direita - $esquerda) / (count($this->disciplinas))); 325 + $this->pdf->escreve_relativo($componente->abreviatura, $esquerda,
  326 + $this->page_y - $altura, $espacoComponentes, 100, $fonte, $tam_texto, $corTexto, 'center');
423 327
424 - foreach ($this->disciplinas as $cod_disciplina => $disciplina) {  
425 - $obj_dispensa_disciplina = new clsPmieducarDispensaDisciplina($matricula,  
426 - $aluno['ref_cod_serie'], $this->ref_cod_escola, $cod_disciplina); 328 + $this->pdf->escreve_relativo($componente->cargaHoraria . ' hrs', $esquerda,
  329 + $this->page_y + 10 - $altura, $espacoComponentes, 50, $fonte,
  330 + $tam_texto - 2, $corTexto, 'center');
427 331
428 - if ($obj_dispensa_disciplina->detalhe()) {  
429 - $media = $faltas = 'D';  
430 - }  
431 - else {  
432 - $nota_exame = FALSE;  
433 -  
434 - if ($curso_conceitual) {  
435 - $obj_nota_aluno = new clsPmieducarNotaAluno();  
436 - $obj_nota_aluno->setOrderby('modulo ASC');  
437 - $lst_nota_aluno = $obj_nota_aluno->lista(NULL, NULL, NULL, $aluno['ref_cod_serie'], $this->ref_cod_escola,  
438 - $cod_disciplina, $matricula, NULL, NULL, NULL, NULL, NULL, NULL, 1);  
439 -  
440 - if (is_array($lst_nota_aluno) && count($lst_nota_aluno)) {  
441 - foreach ($lst_nota_aluno as $key => $nota) {  
442 - $obj_tipo_av_val = new clsPmieducarTipoAvaliacaoValores(  
443 - $nota['ref_ref_cod_tipo_avaliacao'], $nota['ref_sequencial'],  
444 - NULL, NULL, NULL, NULL, 1);  
445 -  
446 - $det_tipo_av_val = $obj_tipo_av_val->detalhe();  
447 - $media = $det_tipo_av_val['nome'];  
448 - }  
449 - }  
450 - } else {  
451 - if (dbBool($det_serie['ultima_nota_define'])) {  
452 - $obj_nota_aluno = new clsPmieducarNotaAluno();  
453 -  
454 - $media = $obj_nota_aluno->getUltimaNotaModulo($matricula, $cod_disciplina,  
455 - $aluno['ref_cod_serie'], count($this->array_modulos));  
456 - } else {  
457 - $obj_nota_aluno = new clsPmieducarNotaAluno();  
458 - $obj_nota_aluno->setOrderby('modulo ASC');  
459 -  
460 - $lst_nota_aluno = $obj_nota_aluno->lista(NULL, NULL, NULL,  
461 - $aluno['ref_cod_serie'], $this->ref_cod_escola, $cod_disciplina,  
462 - $matricula, NULL, NULL, NULL, NULL, NULL, NULL, 1);  
463 -  
464 - $qtd_modulos = count($this->array_modulos);  
465 - $notas = 0;  
466 -  
467 - if (is_array($lst_nota_aluno) && count($lst_nota_aluno)) {  
468 - foreach ($lst_nota_aluno as $key => $nota) {  
469 - if ($key < $qtd_modulos) {  
470 - $obj_tipo_av_val = new clsPmieducarTipoAvaliacaoValores(  
471 - $nota['ref_ref_cod_tipo_avaliacao'], $nota['ref_sequencial'],  
472 - NULL, NULL, NULL, NULL);  
473 -  
474 - $det_tipo_av_val = $obj_tipo_av_val->detalhe();  
475 - $notas += $det_tipo_av_val['valor'];  
476 - } else {  
477 - $notas += $nota['nota'] * 2;  
478 - $nota_exame = true;  
479 - }  
480 - }  
481 - }  
482 -  
483 - $media = $nota_exame ? $notas / (count($lst_nota_aluno) + 1) :  
484 - $notas / count($lst_nota_aluno);  
485 -  
486 - $obj_media = new clsPmieducarTipoAvaliacaoValores();  
487 - $det_media = $obj_media->lista($det_curso['ref_cod_tipo_avaliacao'],  
488 - $det_curso['ref_sequencial'], NULL, NULL, $media, $media);  
489 -  
490 - if (is_array($det_media) && count($det_media)) {  
491 - $det_media = array_shift($det_media);  
492 - $media = $det_media['valor'];  
493 - $media = str_replace('.', ',', sprintf('%01.1f', $media));  
494 - }  
495 - }  
496 - } 332 + $this->pdf->escreve_relativo('Nota / Conceito', $esquerda, $this->page_y + 3,
  333 + $espacoComponentes / $espacoDiv, 50, $fonte, $tam_texto - 2, $corTexto, 'center');
497 334
498 - $obj_falta = new clsPmieducarFaltaAluno();  
499 - $faltas = $obj_falta->total_faltas_disciplina($matricula, $cod_disciplina, $aluno['ref_cod_serie']);  
500 - } 335 + if (!$this->presencaGeral) {
  336 + $this->pdf->escreve_relativo('Falta', $esquerda + $espacoComponentes / 2,
  337 + $this->page_y + 3, $espacoComponentes / $espacoDiv, 50, $fonte, $tam_texto - 2,
  338 + $corTexto, 'center');
  339 + }
501 340
502 - $this->pdf->escreve_relativo($media, $esquerda, $this->page_y + 4,  
503 - $espaco_disciplinas / 2, 100, $fonte, $tam_texto + 1, $corTexto, 'center'); 341 + $this->pdf->linha_relativa($esquerda, $this->page_y - $altura, 0, $altura * 2);
504 342
505 - $this->pdf->linha_relativa($esquerda + $espaco_disciplinas / 2,  
506 - $this->page_y, 0, $altura); 343 + $esquerda += $espacoComponentes;
  344 + $this->pdf->linha_relativa($esquerda + $espacoComponentes / $espacoDiv,
  345 + $this->page_y, 0, $altura);
  346 + }
507 347
508 - $this->pdf->escreve_relativo($faltas, $esquerda + $espaco_disciplinas / 2,  
509 - $this->page_y + 4, $espaco_disciplinas / 2, 100, $fonte, $tam_texto + 1,  
510 - $corTexto, 'center'); 348 + if ($this->presencaGeral) {
  349 + $this->pdf->linha_relativa($esquerda, $this->page_y - $altura, 0, $altura * 2);
511 350
512 - $esquerda += $espaco_disciplinas; 351 + $this->pdf->escreve_relativo('Faltas', $esquerda, $this->page_y, $espacoComponentes,
  352 + 50, $fonte, $tam_texto, $corTexto, 'center');
513 353
514 - $this->pdf->linha_relativa($esquerda, $this->page_y, 0, $altura);  
515 - } 354 + $this->pdf->linha_relativa($esquerda += $espacoComponentes,
  355 + $this->page_y - $altura, 0, $altura * 2);
  356 + }
516 357
517 - $this->page_y += $altura; 358 + $this->page_y += $altura;
518 359
519 - if ($this->page_y > $this->pdf->altura - $altura * 2) {  
520 - $this->pdf->ClosePage();  
521 - $this->pdf->OpenPage();  
522 - $this->addCabecalho();  
523 - }  
524 - } 360 + return $carga_global;
525 } 361 }
526 362
527 - //monta alunos que a serie tem falta globalizada  
528 - function montaAlunoGlobalizados($alunos_matriculados, $det_curso, $curso_conceitual) 363 + function getAlunoNotasFaltasTable($alunos_matriculados, $det_curso, $curso_conceitual)
529 { 364 {
530 $fonte = 'arial'; 365 $fonte = 'arial';
531 $corTexto = '#000000'; 366 $corTexto = '#000000';
532 $esquerda_original = 3; 367 $esquerda_original = 3;
533 $espessura_linha = 0.3; 368 $espessura_linha = 0.3;
534 - $tam_texto = 7; 369 + $tam_texto = 9;
535 $direita = 834; 370 $direita = 834;
536 $altura = 20; 371 $altura = 20;
537 372
538 $obj_serie = new clsPmieducarSerie($this->ref_cod_serie); 373 $obj_serie = new clsPmieducarSerie($this->ref_cod_serie);
539 $det_serie = $obj_serie->detalhe(); 374 $det_serie = $obj_serie->detalhe();
540 375
  376 + $espacoDiv = $this->presencaGeral ? 1 : 2;
  377 +
541 foreach ($alunos_matriculados as $matricula => $aluno) { 378 foreach ($alunos_matriculados as $matricula => $aluno) {
  379 + $boletim = new Avaliacao_Service_Boletim(array('matricula' => $matricula));
  380 + $medias = $boletim->getMediasComponentes();
  381 +
  382 + if ($this->presencaGeral) {
  383 + // Soma as faltas do aluno
  384 + $faltas = array_sum(CoreExt_Entity::entityFilterAttr(
  385 + $boletim->getFaltasGerais(), 'etapa', 'quantidade')
  386 + );
  387 + }
  388 + else {
  389 + $faltas = $boletim->getFaltasComponentes();
  390 + }
  391 +
542 $esquerda = $esquerda_original; 392 $esquerda = $esquerda_original;
543 393
  394 + // Matrícula
544 $this->pdf->quadrado_relativo($esquerda, $this->page_y, $direita, $altura); 395 $this->pdf->quadrado_relativo($esquerda, $this->page_y, $direita, $altura);
545 396
546 $this->pdf->escreve_relativo($matricula, $esquerda, $this->page_y + 2, 45, 397 $this->pdf->escreve_relativo($matricula, $esquerda, $this->page_y + 2, 45,
@@ -548,6 +399,7 @@ class indice extends clsCadastro @@ -548,6 +399,7 @@ class indice extends clsCadastro
548 399
549 $this->pdf->linha_relativa($esquerda += 45, $this->page_y, 0, $altura); 400 $this->pdf->linha_relativa($esquerda += 45, $this->page_y, 0, $altura);
550 401
  402 + // Nome do aluno
551 $espaco_nome = 150; 403 $espaco_nome = 150;
552 404
553 $this->pdf->escreve_relativo($aluno['nome'], $esquerda, $this->page_y + 2, 405 $this->pdf->escreve_relativo($aluno['nome'], $esquerda, $this->page_y + 2,
@@ -555,108 +407,67 @@ class indice extends clsCadastro @@ -555,108 +407,67 @@ class indice extends clsCadastro
555 407
556 $this->pdf->linha_relativa($esquerda += $espaco_nome, $this->page_y, 0, $altura); 408 $this->pdf->linha_relativa($esquerda += $espaco_nome, $this->page_y, 0, $altura);
557 409
558 - $this->pdf->escreve_relativo($aluno['aprovado'] == 1 ? 'Aprovado' : 'Reprovado', 410 + // Situação da matrícula
  411 + $this->pdf->escreve_relativo(App_Model_MatriculaSituacao::getInstance()->getValue($aluno['aprovado']),
559 $esquerda, $this->page_y + 4, 45, 45, $fonte, $tam_texto, $corTexto, 'center'); 412 $esquerda, $this->page_y + 4, 45, 45, $fonte, $tam_texto, $corTexto, 'center');
560 413
561 $this->pdf->linha_relativa($esquerda += 45, $this->page_y, 0, $altura); 414 $this->pdf->linha_relativa($esquerda += 45, $this->page_y, 0, $altura);
562 415
563 - $espaco_disciplinas = ceil(($direita - $esquerda) / (count($this->disciplinas) + 1));  
564 -  
565 - foreach ($this->disciplinas as $cod_disciplina => $disciplina) {  
566 - $obj_dispensa_disciplina = new clsPmieducarDispensaDisciplina($matricula,  
567 - $aluno['ref_cod_serie'], $this->ref_cod_escola, $cod_disciplina); 416 + $espacoComponentes = ceil(
  417 + ($direita - $esquerda) / (count($this->componentes) + ($this->presencaGeral ? 1 : 0))
  418 + );
568 419
569 - if ($obj_dispensa_disciplina->detalhe()) {  
570 - $media = $faltas = 'D'; 420 + // Exibe as médias e faltas do aluno
  421 + foreach ($this->componentes as $id => $componente) {
  422 + // Se não tem média, foi dispensado do componente
  423 + if (!isset($medias[$id])) {
  424 + $media = 'D';
  425 + $faltas = 'D';
571 } 426 }
572 else { 427 else {
573 - $nota_exame = false;  
574 -  
575 - if ($curso_conceitual) {  
576 - $obj_nota_aluno = new clsPmieducarNotaAluno();  
577 - $obj_nota_aluno->setOrderby('modulo ASC');  
578 - $lst_nota_aluno = $obj_nota_aluno->lista(NULL, NULL,  
579 - $det_curso['ref_cod_tipo_avaliacao'], $aluno['ref_cod_serie'],  
580 - $this->ref_cod_escola, $cod_disciplina, $matricula, NULL, NULL,  
581 - NULL, NULL, NULL, NULL, 1);  
582 -  
583 - if (is_array($lst_nota_aluno) && count($lst_nota_aluno)) {  
584 - foreach ($lst_nota_aluno as $key => $nota) {  
585 - $obj_tipo_av_val = new clsPmieducarTipoAvaliacaoValores(  
586 - $nota['ref_ref_cod_tipo_avaliacao'], $nota['ref_sequencial'],  
587 - NULL, NULL, NULL, NULL, 1);  
588 -  
589 - $det_tipo_av_val = $obj_tipo_av_val->detalhe();  
590 - $media = $det_tipo_av_val['nome'];  
591 - }  
592 - }  
593 - } else {  
594 - if (dbBool($det_serie['ultima_nota_define'])) {  
595 - $obj_nota_aluno = new clsPmieducarNotaAluno();  
596 -  
597 - $media = $obj_nota_aluno->getUltimaNotaModulo($matricula,  
598 - $cod_disciplina, $aluno['ref_cod_serie'], count($this->array_modulos));  
599 - } else {  
600 - $obj_nota_aluno = new clsPmieducarNotaAluno();  
601 -  
602 - $obj_nota_aluno->setOrderby('modulo ASC');  
603 -  
604 - $lst_nota_aluno = $obj_nota_aluno->lista(NULL, NULL,  
605 - $det_curso['ref_cod_tipo_avaliacao'], $aluno['ref_cod_serie'],  
606 - $this->ref_cod_escola, $cod_disciplina, $matricula, NULL, NULL,  
607 - NULL, NULL, NULL, NULL, 1);  
608 -  
609 - $qtd_modulos = count($this->array_modulos);  
610 -  
611 - $notas = 0;  
612 - if (is_array($lst_nota_aluno) && count($lst_nota_aluno)) {  
613 - foreach ($lst_nota_aluno as $key => $nota) {  
614 - if ($key < $qtd_modulos) {  
615 - $obj_tipo_av_val = new clsPmieducarTipoAvaliacaoValores(  
616 - $nota['ref_ref_cod_tipo_avaliacao'], $nota['ref_sequencial'],  
617 - NULL, NULL, NULL, NULL);  
618 -  
619 - $det_tipo_av_val = $obj_tipo_av_val->detalhe();  
620 - $notas += $det_tipo_av_val['valor'];  
621 - } else {  
622 - $notas += $nota['nota'] * 2;  
623 - $nota_exame = true;  
624 - }  
625 - }  
626 - }  
627 -  
628 - $media = $nota_exame ? $notas / (count($lst_nota_aluno) + 1) :  
629 - $notas / count($lst_nota_aluno);  
630 -  
631 - $obj_media = new clsPmieducarTipoAvaliacaoValores();  
632 - $det_media = $obj_media->lista($det_curso['ref_cod_tipo_avaliacao'],  
633 - $det_curso['ref_sequencial'], NULL, NULL, $media, $media);  
634 -  
635 - if (is_array($det_media) && count($det_media)) {  
636 - $det_media = array_shift($det_media);  
637 - $media = $det_media['valor'];  
638 - $media = str_replace('.', ',', sprintf('%01.1f', $media));  
639 - } 428 + $media = $medias[$id][0];
  429 + $media = $media->mediaArredondada;
  430 +
  431 + if (!$this->presencaGeral) {
  432 + if (isset($faltas[$id])) {
  433 + $faltas = array_sum(CoreExt_Entity::entityFilterAttr(
  434 + $faltas[$id], 'id', 'quantidade')
  435 + );
640 } 436 }
641 } 437 }
  438 + }
  439 +
  440 + // Média
  441 + $this->pdf->escreve_relativo($media, $esquerda, $this->page_y + 4,
  442 + $espacoComponentes / $espacoDiv, 50, $fonte, $tam_texto + 1, $corTexto, 'center');
  443 +
  444 + $this->pdf->linha_relativa($esquerda + $espacoComponentes / $espacoDiv,
  445 + $this->page_y, 0, $altura);
642 446
643 - $this->pdf->escreve_relativo($media, $esquerda, $this->page_y + 4,  
644 - $espaco_disciplinas, 50, $fonte, $tam_texto + 1, $corTexto, 'center');  
645 - $esquerda += $espaco_disciplinas;  
646 - $this->pdf->linha_relativa($esquerda, $this->page_y, 0, $altura); 447 + // Exibe as faltas no componente curricular, caso a presença não seja geral
  448 + if (!$this->presencaGeral) {
  449 + $this->pdf->escreve_relativo($faltas, $esquerda + $espacoComponentes / $espacoDiv,
  450 + $this->page_y + 4, $espacoComponentes / $espacoDiv, 100, $fonte, $tam_texto + 1,
  451 + $corTexto, 'center');
647 } 452 }
648 453
649 - $obj_falta = new clsPmieducarFaltas(); 454 + $esquerda += $espacoComponentes;
  455 + $this->pdf->linha_relativa($esquerda, $this->page_y, 0, $altura);
  456 + }
  457 +
  458 + // Exibe as faltas no total, caso a presença seja geral
  459 + if ($this->presencaGeral) {
  460 + $this->pdf->escreve_relativo($faltas, $esquerda,
  461 + $this->page_y + 4, $espacoComponentes, 50, $fonte, $tam_texto + 1,
  462 + $corTexto, 'center');
650 463
651 - $faltas = $obj_falta->somaFaltas($matricula);  
652 - $this->pdf->escreve_relativo($faltas ? $faltas : '0', $esquerda, $this->page_y + 4,  
653 - $espaco_disciplinas, 50, $fonte, $tam_texto + 1, $corTexto, 'center'); 464 + $esquerda += $espacoComponentes;
654 465
655 - $esquerda += $espaco_disciplinas;  
656 $this->pdf->linha_relativa($esquerda, $this->page_y, 0, $altura); 466 $this->pdf->linha_relativa($esquerda, $this->page_y, 0, $altura);
657 } 467 }
658 468
659 $this->page_y += $altura; 469 $this->page_y += $altura;
  470 +
660 if ($this->page_y > $this->pdf->altura - $altura * 2) { 471 if ($this->page_y > $this->pdf->altura - $altura * 2) {
661 $this->pdf->ClosePage(); 472 $this->pdf->ClosePage();
662 $this->pdf->OpenPage(); 473 $this->pdf->OpenPage();
@@ -709,31 +520,36 @@ class indice extends clsCadastro @@ -709,31 +520,36 @@ class indice extends clsCadastro
709 78, $direita, 80, $fonte, 12, $corTexto, 'center'); 520 78, $direita, 80, $fonte, 12, $corTexto, 'center');
710 521
711 $this->pdf->quadrado_relativo($esquerda, $this->page_y += 100, $direita, $altura); 522 $this->pdf->quadrado_relativo($esquerda, $this->page_y += 100, $direita, $altura);
  523 +
712 $this->pdf->escreve_relativo('Disciplina', $esquerda + 30, $this->page_y + 1, 524 $this->pdf->escreve_relativo('Disciplina', $esquerda + 30, $this->page_y + 1,
713 150, 50, $fonte, 9, $corTexto, 'center'); 525 150, 50, $fonte, 9, $corTexto, 'center');
  526 +
714 $this->pdf->escreve_relativo('Carga Horária', $esquerda + 35, $this->page_y + 10, 527 $this->pdf->escreve_relativo('Carga Horária', $esquerda + 35, $this->page_y + 10,
715 150, 50, $fonte, 7, $corTexto, 'center'); 528 150, 50, $fonte, 7, $corTexto, 'center');
716 529
717 $this->page_y += $altura; 530 $this->page_y += $altura;
  531 +
718 $this->pdf->quadrado_relativo($esquerda, $this->page_y, $direita, $altura); 532 $this->pdf->quadrado_relativo($esquerda, $this->page_y, $direita, $altura);
  533 +
719 $this->pdf->escreve_relativo('Matrícula', $esquerda, $this->page_y + 2, 45, 534 $this->pdf->escreve_relativo('Matrícula', $esquerda, $this->page_y + 2, 45,
720 45, $fonte, $tam_texto, $corTexto, 'center'); 535 45, $fonte, $tam_texto, $corTexto, 'center');
  536 +
721 $this->pdf->linha_relativa($esquerda += 45, $this->page_y, 0, $altura); 537 $this->pdf->linha_relativa($esquerda += 45, $this->page_y, 0, $altura);
722 538
723 $espaco_nome = 150; 539 $espaco_nome = 150;
  540 +
724 $this->pdf->escreve_relativo('Nome do Aluno', $esquerda, $this->page_y + 2, 541 $this->pdf->escreve_relativo('Nome do Aluno', $esquerda, $this->page_y + 2,
725 $espaco_nome, 45, $fonte, $tam_texto, $corTexto, 'center'); 542 $espaco_nome, 45, $fonte, $tam_texto, $corTexto, 'center');
  543 +
726 $this->pdf->linha_relativa($esquerda += $espaco_nome, $this->page_y, 0, $altura); 544 $this->pdf->linha_relativa($esquerda += $espaco_nome, $this->page_y, 0, $altura);
  545 +
727 $this->pdf->escreve_relativo('Situação', $esquerda, $this->page_y + 2, 45, 546 $this->pdf->escreve_relativo('Situação', $esquerda, $this->page_y + 2, 45,
728 45, $fonte, $tam_texto, $corTexto, 'center'); 547 45, $fonte, $tam_texto, $corTexto, 'center');
  548 +
729 $this->pdf->linha_relativa($esquerda += 45, $this->page_y, 0, $altura); 549 $this->pdf->linha_relativa($esquerda += 45, $this->page_y, 0, $altura);
730 550
731 - if ($this->falta_ch_globalizada) {  
732 - $carga_global = $this->montaDisciplinasGlobalizada($esquerda, $direita - $esquerda);  
733 - }  
734 - else {  
735 - $carga_global = $this->montaDisciplinasNaoGlobalizada($esquerda, $direita - $esquerda);  
736 - } 551 + // Gera o header da tabela e calcula a carga horária global
  552 + $carga_global = $this->getComponentesTableHeader($esquerda, $direita - $esquerda);
737 553
738 $nm_curso = sprintf('Curso: %s Série: %s Turma: %s Dias Letivos: %d Carga Global: %s Turno: %s', 554 $nm_curso = sprintf('Curso: %s Série: %s Turma: %s Dias Letivos: %d Carga Global: %s Turno: %s',
739 $this->nm_curso, $this->nm_serie, $this->nm_turma, $this->dias_letivos, $carga_global, $this->nm_turno); 555 $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 @@ -746,88 +562,6 @@ class indice extends clsCadastro
746 $this->page_y += $altura; 562 $this->page_y += $altura;
747 } 563 }
748 564
749 -  
750 - function montaDisciplinasGlobalizada($esquerda, $espaco_disciplina)  
751 - {  
752 - $tam_texto = 9;  
753 - $altura = 20;  
754 - $tam_texto = 9;  
755 - $fonte = 'arial';  
756 - $corTexto = '#000000';  
757 - $carga_global = 0;  
758 -  
759 - $espaco_disciplinas = ceil($espaco_disciplina / (count($this->disciplinas) + 1));  
760 -  
761 - foreach ($this->disciplinas as $disciplina) {  
762 - $carga_global += $disciplina['carga_horaria'];  
763 -  
764 - $this->pdf->escreve_relativo($disciplina['abreviatura'], $esquerda,  
765 - $this->page_y - $altura, $espaco_disciplinas, 100, $fonte, $tam_texto,  
766 - $corTexto, 'center');  
767 -  
768 - $this->pdf->escreve_relativo($disciplina['carga_horaria'] . ' hrs',  
769 - $esquerda, $this->page_y + 10 - $altura, $espaco_disciplinas, 50,  
770 - $fonte, $tam_texto - 2, $corTexto, 'center');  
771 -  
772 - $this->pdf->escreve_relativo('Nota / Conceito', $esquerda, $this->page_y + 3,  
773 - $espaco_disciplinas, 50, $fonte, $tam_texto - 2, $corTexto, 'center');  
774 -  
775 - $this->pdf->linha_relativa($esquerda, $this->page_y - $altura, 0, $altura * 2);  
776 -  
777 - $esquerda += $espaco_disciplinas;  
778 - }  
779 -  
780 - $this->pdf->linha_relativa($esquerda, $this->page_y - $altura, 0, $altura * 2);  
781 - $this->pdf->escreve_relativo('Faltas', $esquerda, $this->page_y, $espaco_disciplinas,  
782 - 50, $fonte, $tam_texto, $corTexto, 'center');  
783 -  
784 - $this->pdf->linha_relativa($esquerda += $espaco_disciplinas,  
785 - $this->page_y - $altura, 0, $altura * 2);  
786 -  
787 - $this->page_y += $altura;  
788 -  
789 - return $carga_global;  
790 - }  
791 -  
792 - function montaDisciplinasNaoGlobalizada($esquerda, $espaco_disciplina)  
793 - {  
794 - $espaco_disciplinas = ceil($espaco_disciplina / (count($this->disciplinas)));  
795 -  
796 - $tam_texto = 9;  
797 - $altura = 20;  
798 - $tam_texto = 9;  
799 - $fonte = 'arial';  
800 - $corTexto = '#000000';  
801 - $carga_global = 0;  
802 -  
803 - foreach ($this->disciplinas as $disciplina) {  
804 - $carga_global += $disciplina['carga_horaria'];  
805 -  
806 - $this->pdf->escreve_relativo($disciplina['abreviatura'], $esquerda,  
807 - $this->page_y - $altura, $espaco_disciplinas, 100, $fonte, $tam_texto, $corTexto, 'center');  
808 -  
809 - $this->pdf->escreve_relativo($disciplina['carga_horaria'] . ' hrs', $esquerda,  
810 - $this->page_y + 10 - $altura, $espaco_disciplinas, 50, $fonte,  
811 - $tam_texto - 2, $corTexto, 'center');  
812 -  
813 - $this->pdf->escreve_relativo('Nota / Conceito', $esquerda, $this->page_y + 3,  
814 - $espaco_disciplinas / 2, 50, $fonte, $tam_texto - 2, $corTexto, 'center');  
815 -  
816 - $this->pdf->escreve_relativo('Falta', $esquerda + $espaco_disciplinas / 2,  
817 - $this->page_y + 3, $espaco_disciplinas / 2, 50, $fonte, $tam_texto - 2,  
818 - $corTexto, 'center');  
819 -  
820 - $this->pdf->linha_relativa($esquerda, $this->page_y - $altura, 0, $altura * 2);  
821 -  
822 - $this->pdf->linha_relativa($esquerda + $espaco_disciplinas / 2, $this->page_y, 0, $altura);  
823 -  
824 - $esquerda += $espaco_disciplinas;  
825 - }  
826 - $this->page_y += $altura;  
827 -  
828 - return $carga_global;  
829 - }  
830 -  
831 function buscaDiasLetivos() 565 function buscaDiasLetivos()
832 { 566 {
833 $obj_calendario = new clsPmieducarEscolaAnoLetivo(); 567 $obj_calendario = new clsPmieducarEscolaAnoLetivo();
@@ -847,13 +581,13 @@ class indice extends clsCadastro @@ -847,13 +581,13 @@ class indice extends clsCadastro
847 $inicio = $lst_ano_letivo_modulo['0']; 581 $inicio = $lst_ano_letivo_modulo['0'];
848 $fim = $lst_ano_letivo_modulo[count($lst_ano_letivo_modulo) - 1]; 582 $fim = $lst_ano_letivo_modulo[count($lst_ano_letivo_modulo) - 1];
849 583
850 - $mes_inicial = explode("-", $inicio['data_inicio']); 584 + $mes_inicial = explode('-', $inicio['data_inicio']);
851 $mes_inicial = $mes_inicial[1]; 585 $mes_inicial = $mes_inicial[1];
852 $dia_inicial = $mes_inicial[2]; 586 $dia_inicial = $mes_inicial[2];
853 587
854 - $mes_final = explode("-", $fim['data_fim']);  
855 - $mes_final = $mes_final[1];  
856 - $dia_final = $mes_final[2]; 588 + $mes_final = explode('-', $fim['data_fim']);
  589 + $mes_final = $mes_final[1];
  590 + $dia_final = $mes_final[2];
857 } 591 }
858 592
859 for ($mes = $mes_inicial;$mes <= $mes_final; $mes++) { 593 for ($mes = $mes_inicial;$mes <= $mes_final; $mes++) {
@@ -911,11 +645,11 @@ class indice extends clsCadastro @@ -911,11 +645,11 @@ class indice extends clsCadastro
911 } 645 }
912 646
913 if ($DiaSemana != 0 && $DiaSemana != 6) { 647 if ($DiaSemana != 0 && $DiaSemana != 6) {
914 - if (!(key_exists($dia,$dias_mes) && $dias_mes[$dia] == strtolower('n'))) { 648 + if (!(key_exists($dia, $dias_mes) && $dias_mes[$dia] == strtolower('n'))) {
915 $totalDiasUteis++; 649 $totalDiasUteis++;
916 } 650 }
917 } 651 }
918 - elseif (key_exists($dia,$dias_mes) && $dias_mes[$dia] == strtolower('e')) { 652 + elseif (key_exists($dia, $dias_mes) && $dias_mes[$dia] == strtolower('e')) {
919 $totalDiasUteis++; 653 $totalDiasUteis++;
920 } 654 }
921 655
@@ -926,6 +660,75 @@ class indice extends clsCadastro @@ -926,6 +660,75 @@ class indice extends clsCadastro
926 $this->dias_letivos = $totalDiasUteis; 660 $this->dias_letivos = $totalDiasUteis;
927 } 661 }
928 662
  663 + function rodape()
  664 + {
  665 + $texto = '';
  666 + $esquerda = 3;
  667 + $altura = 22;
  668 + $direita = 834;
  669 + $tam_texto = 10;
  670 + $this->pdf->escreve_relativo('Legenda', $esquerda + 2, $this->page_y += 30,
  671 + 150, 100, $fonte, $tam_texto);
  672 +
  673 + if (count($this->componentes) > 10) {
  674 + $legenda_por_linha = TRUE;
  675 + } else {
  676 + $legenda_por_linha = FALSE;
  677 + }
  678 +
  679 + foreach ($this->componentes as $componente) {
  680 + $texto .= $componente->abreviatura . ': ' . $componente->nome . ' ';
  681 +
  682 + if ($legenda_por_linha) {
  683 + $this->pdf->escreve_relativo($texto, $esquerda + 2, $this->page_y += $altura,
  684 + $direita, 200, $fonte, $tam_texto + 1);
  685 +
  686 + $texto = '';
  687 +
  688 + if ($this->page_y > $this->pdf->altura - 50) {
  689 + $texto = '';
  690 + $esquerda = 3;
  691 + $altura = 18;
  692 + $direita = 834;
  693 + $tam_texto = 10;
  694 + $this->pdf->ClosePage();
  695 + $this->pdf->OpenPage();
  696 + $this->addCabecalho();
  697 + }
  698 + }
  699 + }
  700 +
  701 + if (! $legenda_por_linha) {
  702 + $this->pdf->escreve_relativo($texto, $esquerda + 2, $this->page_y += $altura,
  703 + $direita, 200, $fonte, $tam_texto + 1);
  704 + }
  705 +
  706 + if ($this->page_y + $altura * 2 > $this->pdf->altura - 50) {
  707 + $texto = '';
  708 + $esquerda = 3;
  709 + $altura = 18;
  710 + $direita = 834;
  711 + $tam_texto = 10;
  712 + $this->pdf->ClosePage();
  713 + $this->pdf->OpenPage();
  714 + $this->addCabecalho();
  715 + }
  716 +
  717 + $this->pdf->quadrado_relativo($esquerda, $this->page_y += $altura * 2, $direita, 60);
  718 +
  719 + $this->pdf->escreve_relativo('Observações:', $esquerda + 1, $this->page_y + 1, 150, 200, $fonte, $tam_texto);
  720 +
  721 + $this->pdf->linha_relativa($esquerda + 200, $this->page_y += 120, 150, 0);
  722 +
  723 + $this->pdf->escreve_relativo('Assinatura do(a) Secretário(a)', $esquerda + 220,
  724 + $this->page_y + 2, 150, 200, $fonte, 7);
  725 +
  726 + $this->pdf->linha_relativa($esquerda + 450, $this->page_y, 150, 0);
  727 +
  728 + $this->pdf->escreve_relativo('Assinatura do(a) Diretor(a)', $esquerda + 480,
  729 + $this->page_y + 2, 150, 200, $fonte, 7);
  730 + }
  731 +
929 function Editar() 732 function Editar()
930 { 733 {
931 return FALSE; 734 return FALSE;
ieducar/lib/App/Model/MatriculaSituacao.php
@@ -54,7 +54,7 @@ class App_Model_MatriculaSituacao extends CoreExt_Enum @@ -54,7 +54,7 @@ class App_Model_MatriculaSituacao extends CoreExt_Enum
54 54
55 protected $_data = array( 55 protected $_data = array(
56 self::APROVADO => 'Aprovado', 56 self::APROVADO => 'Aprovado',
57 - self::REPROVADO => 'Reprovado', 57 + self::REPROVADO => 'Retido',
58 self::EM_ANDAMENTO => 'Em andamento', 58 self::EM_ANDAMENTO => 'Em andamento',
59 self::TRANSFERIDO => 'Transferido', 59 self::TRANSFERIDO => 'Transferido',
60 self::RECLASSIFICADO => 'Reclassificado', 60 self::RECLASSIFICADO => 'Reclassificado',
ieducar/modules/Avaliacao/Service/Boletim.php
@@ -49,6 +49,9 @@ require_once &#39;App/Model/MatriculaSituacao.php&#39;; @@ -49,6 +49,9 @@ require_once &#39;App/Model/MatriculaSituacao.php&#39;;
49 * @since Classe disponível desde a versão 1.1.0 49 * @since Classe disponível desde a versão 1.1.0
50 * @todo Substituir todos os usos literais de 'Rc' e 'An' por constantes 50 * @todo Substituir todos os usos literais de 'Rc' e 'An' por constantes
51 * ou por um novo CoreExt_Enum 51 * ou por um novo CoreExt_Enum
  52 + * @todo Criar método que retorna o conjunto de faltas de acordo com o
  53 + * tipo de presença da regra, refatorando a série de condicionais
  54 + * existentes em métodos como getSituacaoFaltas()
52 * @version @@package_version@@ 55 * @version @@package_version@@
53 */ 56 */
54 class Avaliacao_Service_Boletim implements CoreExt_Configurable 57 class Avaliacao_Service_Boletim implements CoreExt_Configurable