Commit 3fd4d88c71f20ad53a2de0f6a1328898182ce219

Authored by Eriksen Costa
1 parent 868d8082
Exists in master

Removida a obrigatoriedade de lançamento de notas em Regra de Avaliação:

 * Controller de Regra de Avaliação ({{{EditController.php}}}) atualizado, com inclusão de chamada Ajax para a definição da tabela de arredondamento;
 * {{{Avaliacao_Service_Boletim}}} atualizado para sempre retornar o ''status'' "Aprovado" quando a Regra de Avaliação não usar notas;
 * Controllers relacionados a {{{Avaliacao_Service_Boletim}}} atualizados para prover o novo cenário de Regra de Avaliação sem notas:
   * {{{Falta|Nota|ParecerController}}} atualizados para exibirem a etapa ao qual a nota será lançada;
   * {{{BoletimController}}} atualizado para exibir corretamente o lançamento de faltas por componentes quando a Regra de Avaliação não impõe notas;
 * Atualizada tabela {{{modules.regra_avaliacao}}}, campo {{{formula_media_id}}} não é mais obrigatório. Ver delta 33.
ieducar/misc/database/deltas/33_atualiza_regra_avaliacao_nota_nao_mais_obrigatoria.sql 0 → 100644
@@ -0,0 +1,34 @@ @@ -0,0 +1,34 @@
  1 +-- //
  2 +
  3 +--
  4 +-- Remove a obrigatoriedade de Fórmula de Média para uma Regra de Avaliação,
  5 +-- possibilitando que o campo contenha o valor NULL.
  6 +--
  7 +-- @author Eriksen Costa <eriksencosta@gmail.com>
  8 +-- @license @@license@@
  9 +-- @version $Id$
  10 +--
  11 +
  12 +ALTER TABLE modules.regra_avaliacao
  13 + ALTER COLUMN formula_media_id SET DEFAULT NULL;
  14 +ALTER TABLE modules.regra_avaliacao
  15 + ALTER COLUMN formula_media_id DROP NOT NULL;
  16 +
  17 +-- //@UNDO
  18 +
  19 +-- Não é o ideal, já que esse pode ser de uma instituição diferente. Mas como a
  20 +-- necessidade de um rollback é muito remota e precisamos satisfazer uma
  21 +-- foreign key, pegamos o primeiro id disponível.
  22 +UPDATE
  23 + modules.regra_avaliacao
  24 +SET
  25 + formula_media_id = (SELECT id FROM modules.formula_media OFFSET 0 LIMIT 1)
  26 +WHERE
  27 + formula_media_id IS NULL;
  28 +
  29 +ALTER TABLE modules.regra_avaliacao
  30 + ALTER COLUMN formula_media_id DROP DEFAULT;
  31 +ALTER TABLE modules.regra_avaliacao
  32 + ALTER COLUMN formula_media_id SET NOT NULL;
  33 +
  34 +-- //
0 \ No newline at end of file 35 \ No newline at end of file
ieducar/misc/database/ieducar.sql
@@ -10867,7 +10867,7 @@ SELECT pg_catalog.setval(&#39;parecer_geral_id_seq&#39;, 1, false); @@ -10867,7 +10867,7 @@ SELECT pg_catalog.setval(&#39;parecer_geral_id_seq&#39;, 1, false);
10867 CREATE TABLE regra_avaliacao ( 10867 CREATE TABLE regra_avaliacao (
10868 id integer NOT NULL, 10868 id integer NOT NULL,
10869 instituicao_id integer NOT NULL, 10869 instituicao_id integer NOT NULL,
10870 - formula_media_id integer NOT NULL, 10870 + formula_media_id integer,
10871 formula_recuperacao_id integer DEFAULT 0, 10871 formula_recuperacao_id integer DEFAULT 0,
10872 tabela_arredondamento_id integer, 10872 tabela_arredondamento_id integer,
10873 nome character varying(50) NOT NULL, 10873 nome character varying(50) NOT NULL,
@@ -25794,6 +25794,7 @@ INSERT INTO changelog VALUES (29, &#39;Main&#39;, &#39;NOW()&#39;, &#39;NOW()&#39;, &#39;dbdeploy&#39;, &#39;29_cria @@ -25794,6 +25794,7 @@ INSERT INTO changelog VALUES (29, &#39;Main&#39;, &#39;NOW()&#39;, &#39;NOW()&#39;, &#39;dbdeploy&#39;, &#39;29_cria
25794 INSERT INTO changelog VALUES (30, 'Main', 'NOW()', 'NOW()', 'dbdeploy', '30_cria_indices_otimizacao_queries_quadro_horarios.sql'); 25794 INSERT INTO changelog VALUES (30, 'Main', 'NOW()', 'NOW()', 'dbdeploy', '30_cria_indices_otimizacao_queries_quadro_horarios.sql');
25795 INSERT INTO changelog VALUES (31, 'Main', 'NOW()', 'NOW()', 'dbdeploy', '31_remove_constraint_desnecessaria_pmieducar_quadro_horario_horarios.sql'); 25795 INSERT INTO changelog VALUES (31, 'Main', 'NOW()', 'NOW()', 'dbdeploy', '31_remove_constraint_desnecessaria_pmieducar_quadro_horario_horarios.sql');
25796 INSERT INTO changelog VALUES (32, 'Main', 'NOW()', 'NOW()', 'dbdeploy', '32_corrige_comentario_em_indices.sql'); 25796 INSERT INTO changelog VALUES (32, 'Main', 'NOW()', 'NOW()', 'dbdeploy', '32_corrige_comentario_em_indices.sql');
  25797 +INSERT INTO changelog VALUES (33, 'Main', 'NOW()', 'NOW()', 'dbdeploy', '33_atualiza_regra_avaliacao_nota_nao_mais_obrigatoria.sql');
25797 25798
25798 25799
25799 -- 25800 --
ieducar/modules/Avaliacao/Service/Boletim.php
@@ -1163,11 +1163,6 @@ class Avaliacao_Service_Boletim implements CoreExt_Configurable @@ -1163,11 +1163,6 @@ class Avaliacao_Service_Boletim implements CoreExt_Configurable
1163 */ 1163 */
1164 public function getSituacaoComponentesCurriculares() 1164 public function getSituacaoComponentesCurriculares()
1165 { 1165 {
1166 - // Carrega as médias pois este método pode ser chamado após a chamada a  
1167 - // saveNotas().  
1168 - $mediasComponentes = $this->_loadNotaComponenteCurricularMedia()  
1169 - ->getMediasComponentes();  
1170 -  
1171 $situacao = new stdClass(); 1166 $situacao = new stdClass();
1172 $situacao->situacao = 0; 1167 $situacao->situacao = 0;
1173 $situacao->componentesCurriculares = array(); 1168 $situacao->componentesCurriculares = array();
@@ -1175,6 +1170,15 @@ class Avaliacao_Service_Boletim implements CoreExt_Configurable @@ -1175,6 +1170,15 @@ class Avaliacao_Service_Boletim implements CoreExt_Configurable
1175 // A situação é "aprovado" por padrão 1170 // A situação é "aprovado" por padrão
1176 $situacaoGeral = App_Model_MatriculaSituacao::APROVADO; 1171 $situacaoGeral = App_Model_MatriculaSituacao::APROVADO;
1177 1172
  1173 + if ($this->getRegra()->get('tipoNota') == RegraAvaliacao_Model_Nota_TipoValor::NENHUM) {
  1174 + return $situacao;
  1175 + }
  1176 +
  1177 + // Carrega as médias pois este método pode ser chamado após a chamada a
  1178 + // saveNotas().
  1179 + $mediasComponentes = $this->_loadNotaComponenteCurricularMedia()
  1180 + ->getMediasComponentes();
  1181 +
1178 // Se não tiver nenhuma média ou a quantidade for diferente dos componentes 1182 // Se não tiver nenhuma média ou a quantidade for diferente dos componentes
1179 // curriculares da matrícula, ainda está em andamento 1183 // curriculares da matrícula, ainda está em andamento
1180 if (0 == count($mediasComponentes) || 1184 if (0 == count($mediasComponentes) ||
@@ -2261,6 +2265,10 @@ class Avaliacao_Service_Boletim implements CoreExt_Configurable @@ -2261,6 +2265,10 @@ class Avaliacao_Service_Boletim implements CoreExt_Configurable
2261 */ 2265 */
2262 public function saveNotas() 2266 public function saveNotas()
2263 { 2267 {
  2268 + if ($this->getRegra()->get('tipoNota') == RegraAvaliacao_Model_Nota_TipoValor::NENHUM) {
  2269 + return $this;
  2270 + }
  2271 +
2264 $notaAluno = $this->_getNotaAluno(); 2272 $notaAluno = $this->_getNotaAluno();
2265 $notas = $this->getNotas(); 2273 $notas = $this->getNotas();
2266 2274
ieducar/modules/Avaliacao/Views/BoletimController.php
@@ -165,12 +165,27 @@ class BoletimController extends Core_Controller_Page_ViewController @@ -165,12 +165,27 @@ class BoletimController extends Core_Controller_Page_ViewController
165 $this->addDetalhe(array('Série/Turma', $serie . ' / ' . $turma)); 165 $this->addDetalhe(array('Série/Turma', $serie . ' / ' . $turma));
166 $this->addDetalhe(array('Situação', $situacao)); 166 $this->addDetalhe(array('Situação', $situacao));
167 167
  168 + // Booleano para saber se o tipo de nota é nenhum.
  169 + $nenhumaNota = ($this->_service->getRegra()->get('tipoNota') ==
  170 + RegraAvaliacao_Model_Nota_TipoValor::NENHUM);
  171 +
  172 + // Booleano para saber o tipo de presença em que ocorre apuração
  173 + $porComponente = ($this->_service->getRegra()->get('tipoPresenca') ==
  174 + RegraAvaliacao_Model_TipoPresenca::POR_COMPONENTE);
  175 +
168 // Dados da regra de avaliação 176 // Dados da regra de avaliação
169 $this->addDetalhe(array('Regra avaliação', $this->_service->getRegra())); 177 $this->addDetalhe(array('Regra avaliação', $this->_service->getRegra()));
170 $this->addDetalhe(array('Apuração de falta', $this->_service->getRegra()->tipoPresenca)); 178 $this->addDetalhe(array('Apuração de falta', $this->_service->getRegra()->tipoPresenca));
171 $this->addDetalhe(array('Parecer descritivo', $this->_service->getRegra()->parecerDescritivo)); 179 $this->addDetalhe(array('Parecer descritivo', $this->_service->getRegra()->parecerDescritivo));
172 $this->addDetalhe(array('Progressão', $this->_service->getRegra()->tipoProgressao)); 180 $this->addDetalhe(array('Progressão', $this->_service->getRegra()->tipoProgressao));
173 - $this->addDetalhe(array('Média', $this->_service->getRegra()->media)); 181 +
  182 + if ($nenhumaNota) {
  183 + $media = 'Não usa nota';
  184 + }
  185 + else {
  186 + $media = $this->_service->getRegra()->media;
  187 + }
  188 + $this->addDetalhe(array('Média', $media));
174 189
175 // Cria um array com a quantidade de etapas de 1 a n 190 // Cria um array com a quantidade de etapas de 1 a n
176 $etapas = range(1, $this->_service->getOption('etapas'), 1); 191 $etapas = range(1, $this->_service->getOption('etapas'), 1);
@@ -186,10 +201,6 @@ class BoletimController extends Core_Controller_Page_ViewController @@ -186,10 +201,6 @@ class BoletimController extends Core_Controller_Page_ViewController
186 1 => array('style' => 'background-color: #FFFFFF') 201 1 => array('style' => 'background-color: #FFFFFF')
187 ); 202 );
188 203
189 - // Booleano para saber o tipo de presença em que ocorre apuração  
190 - $porComponente = ($this->_service->getRegra()->get('tipoPresenca') ==  
191 - RegraAvaliacao_Model_TipoPresenca::POR_COMPONENTE);  
192 -  
193 // Helper para criar links e urls 204 // Helper para criar links e urls
194 $url = CoreExt_View_Helper_UrlHelper::getInstance(); 205 $url = CoreExt_View_Helper_UrlHelper::getInstance();
195 206
@@ -208,7 +219,15 @@ class BoletimController extends Core_Controller_Page_ViewController @@ -208,7 +219,15 @@ class BoletimController extends Core_Controller_Page_ViewController
208 219
209 foreach ($etapas as $etapa) { 220 foreach ($etapas as $etapa) {
210 $data = array('data' => sprintf('Etapa %d', $etapa)); 221 $data = array('data' => sprintf('Etapa %d', $etapa));
211 - $data['colspan'] = $porComponente ? 2 : 1; 222 +
  223 + if ($nenhumaNota) {
  224 + $data['colspan'] = 1;
  225 + }
  226 + else {
  227 + $data['colspan'] = $porComponente ? 2 : 1;
  228 + }
  229 +
  230 +
212 $data['attributes'] = $attributes; 231 $data['attributes'] = $attributes;
213 $labels[] = $data; 232 $labels[] = $data;
214 } 233 }
@@ -227,9 +246,15 @@ class BoletimController extends Core_Controller_Page_ViewController @@ -227,9 +246,15 @@ class BoletimController extends Core_Controller_Page_ViewController
227 246
228 // Colspan para tabela com labels e sublabels 247 // Colspan para tabela com labels e sublabels
229 $colspan += $porComponente && $sit->recuperacao ? 4 : 3; 248 $colspan += $porComponente && $sit->recuperacao ? 4 : 3;
230 - $labels[] = array('data' => $porComponente ? '' : 'Média final', 'attributes' => $attributes, 'colspan' => $porComponente ? $colspan : 1); 249 + if ($nenhumaNota) {
  250 + $colspan--;
  251 + }
  252 +
  253 + if (! $nenhumaNota) {
  254 + $labels[] = array('data' => $porComponente ? '' : 'Média', 'attributes' => $attributes, 'colspan' => $porComponente ? $colspan : 1);
  255 + }
231 256
232 - // Inclui coluna para % de presença geral 257 + // Inclui coluna para % de presença geral.
233 if (!$porComponente) { 258 if (!$porComponente) {
234 if ($sit->recuperacao) { 259 if ($sit->recuperacao) {
235 $labels[] = array('data' => 'Exame', 'attributes' => $attributes); 260 $labels[] = array('data' => 'Exame', 'attributes' => $attributes);
@@ -250,11 +275,15 @@ class BoletimController extends Core_Controller_Page_ViewController @@ -250,11 +275,15 @@ class BoletimController extends Core_Controller_Page_ViewController
250 $subLabels = array(); 275 $subLabels = array();
251 $subLabels[] = array('attributes' => $attributes); 276 $subLabels[] = array('attributes' => $attributes);
252 for ($i = 0, $loop = count($etapas); $i < $loop; $i++) { 277 for ($i = 0, $loop = count($etapas); $i < $loop; $i++) {
253 - $subLabels[] = array('data' => 'Nota', 'attributes' => $attributes); 278 + if (! $nenhumaNota) {
  279 + $subLabels[] = array('data' => 'Nota', 'attributes' => $attributes);
  280 + }
254 $subLabels[] = array('data' => 'Falta', 'attributes' => $attributes); 281 $subLabels[] = array('data' => 'Falta', 'attributes' => $attributes);
255 } 282 }
256 283
257 - $subLabels[] = array('data' => 'Média', 'attributes' => $attributes); 284 + if (! $nenhumaNota) {
  285 + $subLabels[] = array('data' => 'Média', 'attributes' => $attributes);
  286 + }
258 287
259 if ($sit->recuperacao) { 288 if ($sit->recuperacao) {
260 $subLabels[] = array('data' => 'Exame', 'attributes' => $attributes); 289 $subLabels[] = array('data' => 'Exame', 'attributes' => $attributes);
@@ -286,13 +315,23 @@ class BoletimController extends Core_Controller_Page_ViewController @@ -286,13 +315,23 @@ class BoletimController extends Core_Controller_Page_ViewController
286 $faltasStats = $this->_service->getSituacaoFaltas(); 315 $faltasStats = $this->_service->getSituacaoFaltas();
287 316
288 // Texto do link 317 // Texto do link
289 - $linkText = ($porComponente ? 'nota/falta' : 'nota'); 318 + if ($nenhumaNota) {
  319 + $linkText = 'falta';
  320 + $linkPath = 'falta';
  321 + }
  322 + else {
  323 + $linkText = ($porComponente ? 'nota/falta' : 'nota');
  324 + $linkPath = 'nota';
  325 + }
290 326
291 // Parâmetros para o link de nota/falta nova 327 // Parâmetros para o link de nota/falta nova
292 $newLink = array( 328 $newLink = array(
293 'text' => 'Lançar ' . $linkText, 329 'text' => 'Lançar ' . $linkText,
294 - 'path' => 'nota',  
295 - 'query' => array('matricula' => $matricula['cod_matricula'], 'componenteCurricular' => 0) 330 + 'path' => $linkPath,
  331 + 'query' => array(
  332 + 'matricula' => $matricula['cod_matricula'],
  333 + 'componenteCurricular' => 0
  334 + )
296 ); 335 );
297 336
298 $iteration = 0; 337 $iteration = 0;
@@ -302,12 +341,12 @@ class BoletimController extends Core_Controller_Page_ViewController @@ -302,12 +341,12 @@ class BoletimController extends Core_Controller_Page_ViewController
302 // Nome do componente curricular 341 // Nome do componente curricular
303 $data[] = array('data' => $componente, 'attributes' => array('style' => 'padding: 5px; text-align: left')); 342 $data[] = array('data' => $componente, 'attributes' => array('style' => 'padding: 5px; text-align: left'));
304 343
305 - $notas = $notasComponentes[$id];  
306 - $mediaSituacao = $mediasSituacoes->componentesCurriculares[$id];  
307 - $medias = $mediasComponentes[$id];  
308 - $faltas = $faltasComponentes[$id];  
309 - $faltaStats = $faltasStats->componentesCurriculares[$id];  
310 - $parecer = NULL; 344 + $notas = $notasComponentes[$id];
  345 + $mediaSituacao = $mediasSituacoes->componentesCurriculares[$id];
  346 + $medias = $mediasComponentes[$id];
  347 + $faltas = $faltasComponentes[$id];
  348 + $faltaStats = $faltasStats->componentesCurriculares[$id];
  349 + $parecer = NULL;
311 350
312 // Caso os pareceres sejam por componente e anuais, recupera a instância 351 // Caso os pareceres sejam por componente e anuais, recupera a instância
313 if ($parecerComponenteAnual) { 352 if ($parecerComponenteAnual) {
@@ -343,36 +382,64 @@ class BoletimController extends Core_Controller_Page_ViewController @@ -343,36 +382,64 @@ class BoletimController extends Core_Controller_Page_ViewController
343 382
344 if (isset($faltas[$i])) { 383 if (isset($faltas[$i])) {
345 $update['query']['etapa'] = $faltas[$i]->etapa; 384 $update['query']['etapa'] = $faltas[$i]->etapa;
346 - $falta = $url->l($faltas[$i]->quantidade, 'nota', $update); 385 + $linkPath = $nenhumaNota ? 'falta' : 'nota';
  386 + $falta = $url->l($faltas[$i]->quantidade, $linkPath, $update);
347 } 387 }
348 388
349 - if (is_null($nota)) {  
350 - if ($porComponente) {  
351 - if (is_null($falta)) {  
352 - $colspan = 2;  
353 - }  
354 - else {  
355 - $colspan = 1; 389 + /*
  390 + * Exibição muito dinâmica. Em resumo, os casos são:
  391 + *
  392 + * 1. nota & falta componente
  393 + * 2. nota
  394 + * 3. falta componente
  395 + * 4. falta geral
  396 + */
  397 + if ($nenhumaNota) {
  398 + $colspan = 1;
  399 + }
  400 + elseif (! $nenhumaNota && $porComponente && is_null($falta)) {
  401 + $colspan = 2;
  402 + }
  403 + else {
  404 + $colspan = 1;
  405 + }
  406 +
  407 + // Caso 1.
  408 + if (! $nenhumaNota) {
  409 + if ($nota) {
  410 + // Caso 2: resolvido com colspan.
  411 + $data[] = array('data' => $nota, 'attributes' => $attributes, 'colspan' => $colspan);
  412 +
  413 + if ($porComponente) {
  414 + $data[] = array('data' => $falta, 'attributes' => $attributes);
356 } 415 }
357 } 416 }
358 else { 417 else {
359 - $colspan = NULL; 418 + $data[] = array('data' => $new, 'attributes' => $attributes, 'colspan' => $colspan);
  419 + $new = '';
360 } 420 }
361 - $data[] = array('data' => $new, 'attributes' => $attributes, 'colspan' => $colspan);  
362 - $new = '';  
363 } 421 }
364 - else {  
365 - $data[] = array('data' => $nota, 'attributes' => $attributes);  
366 -  
367 - if ($porComponente) {  
368 - $data[] = array('data' => $falta, 'attributes' => $attributes); 422 + // Caso 3.
  423 + elseif ($nenhumaNota && $porComponente) {
  424 + if ($falta) {
  425 + $data[] = array('data' => $falta, 'attributes' => $attributes, 'colspan' => $colspan);
  426 + }
  427 + else {
  428 + $data[] = array('data' => $new, 'attributes' => $attributes, 'colspan' => $colspan);
  429 + $new = '';
369 } 430 }
370 } 431 }
  432 + // Caso 4.
  433 + else {
  434 + $data[] = array('data' => '', 'attributes' => $attributes);
  435 + }
371 } 436 }
372 437
373 // Média no componente curricular 438 // Média no componente curricular
374 - $media = $medias[0]->mediaArredondada . ($medias[0]->etapa == 'Rc' ? ' (Rc)' : '');  
375 - $data[] = array('data' => $media, 'attributes' => $attributes); 439 + if (! $nenhumaNota) {
  440 + $media = $medias[0]->mediaArredondada . ($medias[0]->etapa == 'Rc' ? ' (Rc)' : '');
  441 + $data[] = array('data' => $media, 'attributes' => $attributes);
  442 + }
376 443
377 // Adiciona uma coluna extra caso aluno esteja em exame em alguma componente curricular 444 // Adiciona uma coluna extra caso aluno esteja em exame em alguma componente curricular
378 if ($sit->recuperacao) { 445 if ($sit->recuperacao) {
@@ -470,14 +537,15 @@ class BoletimController extends Core_Controller_Page_ViewController @@ -470,14 +537,15 @@ class BoletimController extends Core_Controller_Page_ViewController
470 $data[] = array('data' => $new, 'attributes' => $attributes); 537 $data[] = array('data' => $new, 'attributes' => $attributes);
471 $new = ''; 538 $new = '';
472 539
473 - if ($porComponente) { 540 + if ($porComponente && ! $nenhumaNota) {
474 $data[] = array('data' => '', 'attributes' => $attributes); 541 $data[] = array('data' => '', 'attributes' => $attributes);
475 } 542 }
476 } 543 }
477 } 544 }
478 545
479 - // Porcentagem presença  
480 - $data[] = array(); 546 + if (! $nenhumaNota) {
  547 + $data[] = array();
  548 + }
481 549
482 if ($sit->recuperacao) { 550 if ($sit->recuperacao) {
483 $data[] = array('data' => '', 'attributes' => $attributes); 551 $data[] = array('data' => '', 'attributes' => $attributes);
@@ -487,6 +555,7 @@ class BoletimController extends Core_Controller_Page_ViewController @@ -487,6 +555,7 @@ class BoletimController extends Core_Controller_Page_ViewController
487 $data[] = array('data' => '', 'attributes' => $attributes); 555 $data[] = array('data' => '', 'attributes' => $attributes);
488 } 556 }
489 557
  558 + // Porcentagem presença
490 $data[] = array('data' => sprintf('%.2f%%', $faltasStats->porcentagemPresenca), 'attributes' => $attributes); 559 $data[] = array('data' => sprintf('%.2f%%', $faltasStats->porcentagemPresenca), 'attributes' => $attributes);
491 $data[] = array('data' => $situacao->getValue($sit->falta->situacao), 'attributes' => $attributes); 560 $data[] = array('data' => $situacao->getValue($sit->falta->situacao), 'attributes' => $attributes);
492 561
ieducar/modules/Avaliacao/Views/FaltaController.php
@@ -74,9 +74,9 @@ class FaltaController extends Core_Controller_Page_EditController @@ -74,9 +74,9 @@ class FaltaController extends Core_Controller_Page_EditController
74 protected $_etapa = NULL; 74 protected $_etapa = NULL;
75 75
76 /** 76 /**
77 - * @var Avaliacao_Model_NotaComponente 77 + * @var int
78 */ 78 */
79 - protected $_nota = NULL; 79 + protected $_componenteCurricular = NULL;
80 80
81 /** 81 /**
82 * @var Avaliacao_Model_FaltaAbstract 82 * @var Avaliacao_Model_FaltaAbstract
@@ -93,7 +93,7 @@ class FaltaController extends Core_Controller_Page_EditController @@ -93,7 +93,7 @@ class FaltaController extends Core_Controller_Page_EditController
93 93
94 $this->_options = array( 94 $this->_options = array(
95 'new_success' => 'boletim', 95 'new_success' => 'boletim',
96 - 'new_success_params' => array('matricula' => $this->getRequest()->matricula), 96 + 'new_success_params' => array('matricula' => $this->getRequest()->matricula),
97 'edit_success' => 'boletim', 97 'edit_success' => 'boletim',
98 'edit_success_params' => array('matricula' => $this->getRequest()->matricula), 98 'edit_success_params' => array('matricula' => $this->getRequest()->matricula),
99 ); 99 );
@@ -113,11 +113,23 @@ class FaltaController extends Core_Controller_Page_EditController @@ -113,11 +113,23 @@ class FaltaController extends Core_Controller_Page_EditController
113 { 113 {
114 $this->_etapa = $this->getRequest()->etapa; 114 $this->_etapa = $this->getRequest()->etapa;
115 $this->_matricula = $this->getRequest()->matricula; 115 $this->_matricula = $this->getRequest()->matricula;
  116 + $this->_componenteCurricular = $this->getRequest()->componenteCurricular;
116 117
117 if (isset($this->_etapa) && isset($this->_matricula)) { 118 if (isset($this->_etapa) && isset($this->_matricula)) {
118 return FALSE; 119 return FALSE;
119 } 120 }
120 121
  122 + if ($this->_regra->get('tipoPresenca') == RegraAvaliacao_Model_TipoPresenca::POR_COMPONENTE) {
  123 + $faltas = $this->_service->getFaltasComponentes();
  124 + $faltas = isset($faltas[$this->_componenteCurricular]) ?
  125 + $faltas[$this->_componenteCurricular] : array();
  126 + }
  127 + else {
  128 + $faltas = $this->_service->getFaltasGerais();
  129 + }
  130 +
  131 + $this->_etapa = count($faltas) + 1;
  132 +
121 return TRUE; 133 return TRUE;
122 } 134 }
123 135
@@ -127,6 +139,7 @@ class FaltaController extends Core_Controller_Page_EditController @@ -127,6 +139,7 @@ class FaltaController extends Core_Controller_Page_EditController
127 protected function _initEditar() 139 protected function _initEditar()
128 { 140 {
129 $this->_falta = $this->_service->getFalta($this->_etapa); 141 $this->_falta = $this->_service->getFalta($this->_etapa);
  142 + $this->_parecer = $this->_service->getParecerDescritivo($this->_etapa, $this->_componenteCurricular);
130 return TRUE; 143 return TRUE;
131 } 144 }
132 145
@@ -137,16 +150,31 @@ class FaltaController extends Core_Controller_Page_EditController @@ -137,16 +150,31 @@ class FaltaController extends Core_Controller_Page_EditController
137 { 150 {
138 $this->campoOculto('matricula', $this->_matricula); 151 $this->campoOculto('matricula', $this->_matricula);
139 $this->campoOculto('etapa', $this->_etapa); 152 $this->campoOculto('etapa', $this->_etapa);
  153 + $this->campoOculto('componenteCurricular', $this->_componenteCurricular);
140 154
141 $matricula = $this->_service->getOption('matriculaData'); 155 $matricula = $this->_service->getOption('matriculaData');
142 156
  157 + if (! isset($this->_etapa)) {
  158 + $this->_etapa = 1;
  159 + }
  160 +
143 $this->campoRotulo('1nome', 'Nome', $matricula['nome']); 161 $this->campoRotulo('1nome', 'Nome', $matricula['nome']);
144 $this->campoRotulo('2curso', 'Curso', $matricula['curso_nome']); 162 $this->campoRotulo('2curso', 'Curso', $matricula['curso_nome']);
145 $this->campoRotulo('3serie', 'Série', $matricula['serie_nome']); 163 $this->campoRotulo('3serie', 'Série', $matricula['serie_nome']);
146 $this->campoRotulo('4turma', 'Turma', $matricula['turma_nome']); 164 $this->campoRotulo('4turma', 'Turma', $matricula['turma_nome']);
147 $this->campoRotulo('5etapa', 'Etapa', $this->_etapa == 'Rc' ? 'Recuperação' : $this->_etapa); 165 $this->campoRotulo('5etapa', 'Etapa', $this->_etapa == 'Rc' ? 'Recuperação' : $this->_etapa);
148 166
  167 + if ($this->_regra->get('tipoPresenca') == RegraAvaliacao_Model_TipoPresenca::POR_COMPONENTE) {
  168 + $componentes = $this->_service->getComponentes();
  169 + $this->campoRotulo('6componente_curricular', 'Componente curricular', $componentes[$this->getRequest()->componenteCurricular]);
  170 + }
  171 +
149 $this->campoLista('falta', 'Falta', range(0, 100, 1), $this->_falta->quantidade); 172 $this->campoLista('falta', 'Falta', range(0, 100, 1), $this->_falta->quantidade);
  173 +
  174 + // Caso o parecer seja por etapa e por componente
  175 + if ($this->_regra->get('parecerDescritivo') == RegraAvaliacao_Model_TipoParecerDescritivo::ETAPA_COMPONENTE) {
  176 + $this->campoMemo('parecer', 'Parecer', $this->_parecer, 40, 10, TRUE);
  177 + }
150 } 178 }
151 179
152 /** 180 /**
@@ -157,13 +185,32 @@ class FaltaController extends Core_Controller_Page_EditController @@ -157,13 +185,32 @@ class FaltaController extends Core_Controller_Page_EditController
157 $quantidade = 0 < $this->getRequest()->falta ? 185 $quantidade = 0 < $this->getRequest()->falta ?
158 (int) $this->getRequest()->falta : 0; 186 (int) $this->getRequest()->falta : 0;
159 187
160 - $falta = new Avaliacao_Model_FaltaGeral(array(  
161 - 'quantidade' => $quantidade,  
162 - 'etapa' => $this->getRequest()->etapa  
163 - )); 188 + if ($this->_regra->get('tipoPresenca') == RegraAvaliacao_Model_TipoPresenca::POR_COMPONENTE) {
  189 + $falta = new Avaliacao_Model_FaltaComponente(array(
  190 + 'componenteCurricular' => $this->getRequest()->componenteCurricular,
  191 + 'quantidade' => $quantidade,
  192 + 'etapa' => $this->getRequest()->etapa
  193 + ));
  194 + $this->_service->addFalta($falta);
  195 + }
  196 + else {
  197 + $falta = new Avaliacao_Model_FaltaGeral(array(
  198 + 'quantidade' => $quantidade,
  199 + 'etapa' => $this->getRequest()->etapa
  200 + ));
  201 + }
164 202
165 $this->_service->addFalta($falta); 203 $this->_service->addFalta($falta);
166 204
  205 + if ($this->_regra->get('parecerDescritivo') == RegraAvaliacao_Model_TipoParecerDescritivo::ETAPA_COMPONENTE) {
  206 + $parecer = new Avaliacao_Model_ParecerDescritivoComponente(array(
  207 + 'componenteCurricular' => $this->getRequest()->componenteCurricular,
  208 + 'parecer' => $this->getRequest()->parecer,
  209 + 'etapa' => $this->getRequest()->etapa
  210 + ));
  211 + $this->_service->addParecer($parecer);
  212 + }
  213 +
167 try { 214 try {
168 $this->_service->save(); 215 $this->_service->save();
169 } 216 }
ieducar/modules/Avaliacao/Views/NotaController.php
@@ -105,7 +105,7 @@ class NotaController extends Core_Controller_Page_EditController @@ -105,7 +105,7 @@ class NotaController extends Core_Controller_Page_EditController
105 105
106 $this->_options = array( 106 $this->_options = array(
107 'new_success' => 'boletim', 107 'new_success' => 'boletim',
108 - 'new_success_params' => array('matricula' => $this->getRequest()->matricula), 108 + 'new_success_params' => array('matricula' => $this->getRequest()->matricula),
109 'edit_success' => 'boletim', 109 'edit_success' => 'boletim',
110 'edit_success_params' => array('matricula' => $this->getRequest()->matricula), 110 'edit_success_params' => array('matricula' => $this->getRequest()->matricula),
111 ); 111 );
@@ -131,6 +131,13 @@ class NotaController extends Core_Controller_Page_EditController @@ -131,6 +131,13 @@ class NotaController extends Core_Controller_Page_EditController
131 return FALSE; 131 return FALSE;
132 } 132 }
133 133
  134 + // Determina a etapa atual.
  135 + $this->_etapa = 1;
  136 + $notas = $this->_service->getNotasComponentes();
  137 + if (isset($notas[$this->_componenteCurricular])) {
  138 + $this->_etapa = count($notas[$this->_componenteCurricular]) + 1;
  139 + }
  140 +
134 return TRUE; 141 return TRUE;
135 } 142 }
136 143
ieducar/modules/RegraAvaliacao/Model/Nota/TipoValor.php
@@ -44,10 +44,12 @@ require_once &#39;CoreExt/Enum.php&#39;; @@ -44,10 +44,12 @@ require_once &#39;CoreExt/Enum.php&#39;;
44 */ 44 */
45 class RegraAvaliacao_Model_Nota_TipoValor extends CoreExt_Enum 45 class RegraAvaliacao_Model_Nota_TipoValor extends CoreExt_Enum
46 { 46 {
  47 + const NENHUM = 0;
47 const NUMERICA = 1; 48 const NUMERICA = 1;
48 const CONCEITUAL = 2; 49 const CONCEITUAL = 2;
49 50
50 protected $_data = array( 51 protected $_data = array(
  52 + self::NENHUM => 'Não usar nota',
51 self::NUMERICA => 'Nota numérica', 53 self::NUMERICA => 'Nota numérica',
52 self::CONCEITUAL => 'Nota conceitual' 54 self::CONCEITUAL => 'Nota conceitual'
53 ); 55 );
ieducar/modules/RegraAvaliacao/Model/Regra.php
@@ -76,7 +76,8 @@ class RegraAvaliacao_Model_Regra extends CoreExt_Entity @@ -76,7 +76,8 @@ class RegraAvaliacao_Model_Regra extends CoreExt_Entity
76 'tabelaArredondamento' => array( 76 'tabelaArredondamento' => array(
77 'value' => 1, 77 'value' => 1,
78 'class' => 'TabelaArredondamento_Model_TabelaDataMapper', 78 'class' => 'TabelaArredondamento_Model_TabelaDataMapper',
79 - 'file' => 'TabelaArredondamento/Model/TabelaDataMapper.php' 79 + 'file' => 'TabelaArredondamento/Model/TabelaDataMapper.php',
  80 + 'null' => TRUE
80 ), 81 ),
81 'tipoProgressao' => array( 82 'tipoProgressao' => array(
82 'value' => 1, 83 'value' => 1,
@@ -97,7 +98,8 @@ class RegraAvaliacao_Model_Regra extends CoreExt_Entity @@ -97,7 +98,8 @@ class RegraAvaliacao_Model_Regra extends CoreExt_Entity
97 'formulaMedia' => array( 98 'formulaMedia' => array(
98 'value' => NULL, 99 'value' => NULL,
99 'class' => 'FormulaMedia_Model_FormulaDataMapper', 100 'class' => 'FormulaMedia_Model_FormulaDataMapper',
100 - 'file' => 'FormulaMedia/Model/FormulaDataMapper.php' 101 + 'file' => 'FormulaMedia/Model/FormulaDataMapper.php',
  102 + 'null' => TRUE
101 ), 103 ),
102 'formulaRecuperacao' => array( 104 'formulaRecuperacao' => array(
103 'value' => NULL, 105 'value' => NULL,
@@ -146,6 +148,20 @@ class RegraAvaliacao_Model_Regra extends CoreExt_Entity @@ -146,6 +148,20 @@ class RegraAvaliacao_Model_Regra extends CoreExt_Entity
146 // Instituições 148 // Instituições
147 $instituicoes = array_keys(App_Model_IedFinder::getInstituicoes()); 149 $instituicoes = array_keys(App_Model_IedFinder::getInstituicoes());
148 150
  151 + // Fórmula de média é obrigatória?
  152 + $isFormulaMediaRequired = TRUE;
  153 +
  154 + // Média é obrigatória?
  155 + $isMediaRequired = TRUE;
  156 +
  157 + if ($this->get('tipoNota') == RegraAvaliacao_Model_Nota_TipoValor::NENHUM) {
  158 + $isFormulaMediaRequired = FALSE;
  159 + $isMediaRequired = FALSE;
  160 +
  161 + // Aceita somente o valor NULL quando o tipo de nota é Nenhum.
  162 + $formulaMedia = $formulaMedia + array(NULL);
  163 + }
  164 +
149 return array( 165 return array(
150 'instituicao' => new CoreExt_Validate_Choice(array( 166 'instituicao' => new CoreExt_Validate_Choice(array(
151 'choices' => $instituicoes 167 'choices' => $instituicoes
@@ -154,7 +170,8 @@ class RegraAvaliacao_Model_Regra extends CoreExt_Entity @@ -154,7 +170,8 @@ class RegraAvaliacao_Model_Regra extends CoreExt_Entity
154 'min' => 5, 'max' => 50 170 'min' => 5, 'max' => 50
155 )), 171 )),
156 'formulaMedia' => new CoreExt_Validate_Choice(array( 172 'formulaMedia' => new CoreExt_Validate_Choice(array(
157 - 'choices' => $formulaMedia 173 + 'choices' => $formulaMedia,
  174 + 'required' => $isFormulaMediaRequired
158 )), 175 )),
159 'formulaRecuperacao' => new CoreExt_Validate_Choice(array( 176 'formulaRecuperacao' => new CoreExt_Validate_Choice(array(
160 'choices' => $formulaRecuperacao, 177 'choices' => $formulaRecuperacao,
@@ -179,8 +196,9 @@ class RegraAvaliacao_Model_Regra extends CoreExt_Entity @@ -179,8 +196,9 @@ class RegraAvaliacao_Model_Regra extends CoreExt_Entity
179 )), 196 )),
180 'media' => $this->validateIfEquals( 197 'media' => $this->validateIfEquals(
181 'tipoProgressao', RegraAvaliacao_Model_TipoProgressao::CONTINUADA, 198 'tipoProgressao', RegraAvaliacao_Model_TipoProgressao::CONTINUADA,
182 - 'CoreExt_Validate_Numeric', array('min' => 1, 'max' => 10),  
183 - array('required' => FALSE, 'min' => 0, 'max' => 10) 199 + 'CoreExt_Validate_Numeric',
  200 + array('required' => $isMediaRequired, 'min' => 1, 'max' => 10),
  201 + array('required' => $isMediaRequired, 'min' => 0, 'max' => 10)
184 ), 202 ),
185 'porcentagemPresenca' => new CoreExt_Validate_Numeric(array( 203 'porcentagemPresenca' => new CoreExt_Validate_Numeric(array(
186 'min' => 1, 'max' => 100 204 'min' => 1, 'max' => 100
ieducar/modules/RegraAvaliacao/Views/EditController.php
@@ -111,6 +111,102 @@ class EditController extends Core_Controller_Page_EditController @@ -111,6 +111,102 @@ class EditController extends Core_Controller_Page_EditController
111 ) 111 )
112 ); 112 );
113 113
  114 + private $_tipoNotaJs = '
  115 +var tipo_nota = new function() {
  116 + this.isNenhum = function(docObj, formId, fieldsName) {
  117 + var regex = new RegExp(fieldsName);
  118 + var form = docObj.getElementById(formId);
  119 +
  120 + for (var i = 0; i < form.elements.length; i++) {
  121 + var elementName = form.elements[i].name;
  122 + if (null !== elementName.match(regex)) {
  123 + if (form.elements[i].checked == false) {
  124 + continue;
  125 + }
  126 +
  127 + docObj.getElementById(\'tabelaArredondamento\').disabled = false;
  128 + docObj.getElementById(\'media\').disabled = false;
  129 + docObj.getElementById(\'formulaMedia\').disabled = false;
  130 + docObj.getElementById(\'formulaRecuperacao\').disabled = false;
  131 +
  132 + if (form.elements[i].value == 0) {
  133 + docObj.getElementById(\'tabelaArredondamento\').disabled = true;
  134 + docObj.getElementById(\'media\').disabled = true;
  135 + docObj.getElementById(\'formulaMedia\').disabled = true;
  136 + docObj.getElementById(\'formulaRecuperacao\').disabled = true;
  137 + }
  138 +
  139 + break;
  140 + }
  141 + }
  142 + };
  143 +};
  144 +
  145 +var tabela_arredondamento = new function() {
  146 + this.docObj = null;
  147 +
  148 + this.getTabelasArredondamento = function(docObj, tipoNota) {
  149 + tabela_arredondamento.docObj = docObj;
  150 + var xml = new ajax(tabela_arredondamento.parseResponse);
  151 + xml.envia("/modules/TabelaArredondamento/Views/TabelaTipoNotaAjax.php?tipoNota=" + tipoNota);
  152 + };
  153 +
  154 + this.parseResponse = function() {
  155 + if (arguments[0] === null) {
  156 + return;
  157 + }
  158 +
  159 + docObj = tabela_arredondamento.docObj;
  160 +
  161 + tabelas = arguments[0].getElementsByTagName(\'tabela\');
  162 + docObj.options.length = 0;
  163 + for (var i = 0; i < tabelas.length; i++) {
  164 + docObj[docObj.options.length] = new Option(
  165 + tabelas[i].firstChild.nodeValue, tabelas[i].getAttribute(\'id\'), false, false
  166 + );
  167 + }
  168 +
  169 + if (tabelas.length == 0) {
  170 + docObj.options[0] = new Option(
  171 + \'O tipo de nota não possui tabela de arredondamento.\', \'\', false, false
  172 + );
  173 + }
  174 + }
  175 +}
  176 +';
  177 +
  178 + protected function _preRender()
  179 + {
  180 + parent::_preRender();
  181 +
  182 + // Adiciona o código Javascript de controle do formulário.
  183 + $js = sprintf('
  184 + <script type="text/javascript">
  185 + %s
  186 +
  187 + window.onload = function() {
  188 + // Desabilita os campos relacionados caso o tipo de nota seja "nenhum".
  189 + new tipo_nota.isNenhum(document, \'formcadastro\', \'tipoNota\');
  190 +
  191 + // Faz o binding dos eventos isNenhum e getTabelasArredondamento nos
  192 + // campos radio de tipo de nota.
  193 + var events = function() {
  194 + new tipo_nota.isNenhum(document, \'formcadastro\', \'tipoNota\');
  195 + new tabela_arredondamento.getTabelasArredondamento(
  196 + document.getElementById(\'tabelaArredondamento\'),
  197 + this.value
  198 + );
  199 + }
  200 +
  201 + new ied_forms.bind(document, \'formcadastro\', \'tipoNota\', \'click\', events);
  202 + }
  203 + </script>',
  204 + $this->_tipoNotaJs
  205 + );
  206 +
  207 + $this->prependOutput($js);
  208 + }
  209 +
114 /** 210 /**
115 * @see clsCadastro#Gerar() 211 * @see clsCadastro#Gerar()
116 */ 212 */
@@ -135,9 +231,14 @@ class EditController extends Core_Controller_Page_EditController @@ -135,9 +231,14 @@ class EditController extends Core_Controller_Page_EditController
135 // Tabela de arredondamento 231 // Tabela de arredondamento
136 $tabelaArredondamento = $this->getDataMapper()->findTabelaArredondamento($this->getEntity()); 232 $tabelaArredondamento = $this->getDataMapper()->findTabelaArredondamento($this->getEntity());
137 $tabelaArredondamento = CoreExt_Entity::entityFilterAttr($tabelaArredondamento, 'id', 'nome'); 233 $tabelaArredondamento = CoreExt_Entity::entityFilterAttr($tabelaArredondamento, 'id', 'nome');
  234 +
  235 + if (empty($tabelaArredondamento)) {
  236 + $tabelaArredondamento = array(0 => 'O tipo de nota não possui tabela de arredondamento.');
  237 + }
  238 +
138 $this->campoLista('tabelaArredondamento', $this->_getLabel('tabelaArredondamento'), 239 $this->campoLista('tabelaArredondamento', $this->_getLabel('tabelaArredondamento'),
139 $tabelaArredondamento, $this->getEntity()->get('tabelaArredondamento'), '', 240 $tabelaArredondamento, $this->getEntity()->get('tabelaArredondamento'), '',
140 - FALSE, $this->_getHelp('tabelaArredondamento')); 241 + FALSE, $this->_getHelp('tabelaArredondamento'), '', FALSE, FALSE);
141 242
142 // Tipo progressão 243 // Tipo progressão
143 $tipoProgressao = RegraAvaliacao_Model_TipoProgressao::getInstance(); 244 $tipoProgressao = RegraAvaliacao_Model_TipoProgressao::getInstance();
@@ -147,14 +248,14 @@ class EditController extends Core_Controller_Page_EditController @@ -147,14 +248,14 @@ class EditController extends Core_Controller_Page_EditController
147 248
148 // Média 249 // Média
149 $this->campoTexto('media', $this->_getLabel('media'), $this->getEntity()->media, 250 $this->campoTexto('media', $this->_getLabel('media'), $this->getEntity()->media,
150 - 5, 50, TRUE, FALSE, FALSE, $this->_getHelp('media')); 251 + 5, 50, FALSE, FALSE, FALSE, $this->_getHelp('media'));
151 252
152 // Cálculo média 253 // Cálculo média
153 $formulas = $this->getDataMapper()->findFormulaMediaFinal(); 254 $formulas = $this->getDataMapper()->findFormulaMediaFinal();
154 $formulas = CoreExt_Entity::entityFilterAttr($formulas, 'id', 'nome'); 255 $formulas = CoreExt_Entity::entityFilterAttr($formulas, 'id', 'nome');
155 $this->campoLista('formulaMedia', $this->_getLabel('formulaMedia'), 256 $this->campoLista('formulaMedia', $this->_getLabel('formulaMedia'),
156 $formulas, $this->getEntity()->get('formulaMedia'), '', FALSE, 257 $formulas, $this->getEntity()->get('formulaMedia'), '', FALSE,
157 - $this->_getHelp('formulaMedia')); 258 + $this->_getHelp('formulaMedia'), '', FALSE, FALSE);
158 259
159 // Cálculo média recuperação 260 // Cálculo média recuperação
160 $formulas = $this->getDataMapper()->findFormulaMediaRecuperacao(); 261 $formulas = $this->getDataMapper()->findFormulaMediaRecuperacao();
ieducar/modules/TabelaArredondamento/Model/Tabela.php
@@ -91,11 +91,15 @@ class TabelaArredondamento_Model_Tabela extends CoreExt_Entity @@ -91,11 +91,15 @@ class TabelaArredondamento_Model_Tabela extends CoreExt_Entity
91 91
92 // Tipo nota 92 // Tipo nota
93 $tipoNota = RegraAvaliacao_Model_Nota_TipoValor::getInstance(); 93 $tipoNota = RegraAvaliacao_Model_Nota_TipoValor::getInstance();
  94 + $tipoNotas = $tipoNota->getKeys();
  95 +
  96 + // Remove "nenhum" das opções.
  97 + unset($tipoNotas[RegraAvaliacao_Model_Nota_TipoValor::NENHUM]);
94 98
95 return array( 99 return array(
96 'instituicao' => new CoreExt_Validate_Choice(array('choices' => $instituicoes)), 100 'instituicao' => new CoreExt_Validate_Choice(array('choices' => $instituicoes)),
97 'nome' => new CoreExt_Validate_String(array('min' => 5, 'max' => 50)), 101 'nome' => new CoreExt_Validate_String(array('min' => 5, 'max' => 50)),
98 - 'tipoNota' => new CoreExt_Validate_Choice(array('choices' => $tipoNota->getKeys())) 102 + 'tipoNota' => new CoreExt_Validate_Choice(array('choices' => $tipoNotas))
99 ); 103 );
100 } 104 }
101 105
ieducar/modules/TabelaArredondamento/Views/EditController.php
@@ -154,7 +154,9 @@ class EditController extends Core_Controller_Page_EditController @@ -154,7 +154,9 @@ class EditController extends Core_Controller_Page_EditController
154 154
155 // Tipo de nota 155 // Tipo de nota
156 $notaTipoValor = RegraAvaliacao_Model_Nota_TipoValor::getInstance(); 156 $notaTipoValor = RegraAvaliacao_Model_Nota_TipoValor::getInstance();
157 - $this->campoRadio('tipoNota', $this->_getLabel('tipoNota'), $notaTipoValor->getEnums(), 157 + $notaTipos = $notaTipoValor->getEnums();
  158 + unset($notaTipos[RegraAvaliacao_Model_Nota_TipoValor::NENHUM]);
  159 + $this->campoRadio('tipoNota', $this->_getLabel('tipoNota'), $notaTipos,
158 $this->getEntity()->get('tipoNota'), '', $this->_getHelp('tipoNota')); 160 $this->getEntity()->get('tipoNota'), '', $this->_getHelp('tipoNota'));
159 161
160 // Parte condicional 162 // Parte condicional
ieducar/modules/TabelaArredondamento/Views/TabelaTipoNotaAjax.php 0 → 100644
@@ -0,0 +1,51 @@ @@ -0,0 +1,51 @@
  1 +<?php
  2 +
  3 +/**
  4 + * i-Educar - Sistema de gestão escolar
  5 + *
  6 + * Copyright (C) 2006 Prefeitura Municipal de Itajaí
  7 + * <ctima@itajai.sc.gov.br>
  8 + *
  9 + * Este programa é software livre; você pode redistribuí-lo e/ou modificá-lo
  10 + * sob os termos da Licença Pública Geral GNU conforme publicada pela Free
  11 + * Software Foundation; tanto a versão 2 da Licença, como (a seu critério)
  12 + * qualquer versão posterior.
  13 + *
  14 + * Este programa é distribuí­do na expectativa de que seja útil, porém, SEM
  15 + * NENHUMA GARANTIA; nem mesmo a garantia implí­cita de COMERCIABILIDADE OU
  16 + * ADEQUAÇÃO A UMA FINALIDADE ESPECÍFICA. Consulte a Licença Pública Geral
  17 + * do GNU para mais detalhes.
  18 + *
  19 + * Você deve ter recebido uma cópia da Licença Pública Geral do GNU junto
  20 + * com este programa; se não, escreva para a Free Software Foundation, Inc., no
  21 + * endereço 59 Temple Street, Suite 330, Boston, MA 02111-1307 USA.
  22 + *
  23 + * @author Eriksen Costa Paixão <eriksen.paixao_bs@cobra.com.br>
  24 + * @category i-Educar
  25 + * @license @@license@@
  26 + * @package TabelaArredondamento
  27 + * @subpackage Modules
  28 + * @since Arquivo disponível desde a versão 1.2.0
  29 + * @version $Id$
  30 + */
  31 +
  32 +require_once dirname(__FILE__) . '/../../../includes/bootstrap.php';
  33 +require_once 'include/clsBanco.inc.php';
  34 +require_once 'TabelaArredondamento/Model/TabelaDataMapper.php';
  35 +
  36 +$tabelas = array();
  37 +
  38 +if (isset($_GET['tipoNota'])) {
  39 + $tabela = new TabelaArredondamento_Model_TabelaDataMapper();
  40 + $tabelas = $tabela->findAll(array(), array('tipoNota' => (int) $_GET['tipoNota']));
  41 +}
  42 +
  43 +header('Content-type: text/xml');
  44 +
  45 +echo "<?xml version=\"1.0\" encoding=\"ISO-8859-15\"?>\n<query xmlns=\"sugestoes\">\n";
  46 +
  47 +foreach ($tabelas as $tabela) {
  48 + echo sprintf('<tabela id="%d">%s</tabela>', $tabela->id, $tabela->nome);
  49 +}
  50 +
  51 +echo '</query>';