diff --git a/ieducar/intranet/educar_escola_serie_cad.php b/ieducar/intranet/educar_escola_serie_cad.php index a73ebb120f..446f43d8cb 100644 --- a/ieducar/intranet/educar_escola_serie_cad.php +++ b/ieducar/intranet/educar_escola_serie_cad.php @@ -17,7 +17,7 @@ * do GNU para mais detalhes. * * Você deve ter recebido uma cópia da Licença Pública Geral do GNU junto - * com este programa; se não, escreva para a Free Software Foundation, Inc., no + * endereço 59 Temple Street, Suite 330, Boston, MA 02111-1307 USA. * * @author Prefeitura Municipal de Itajaí @@ -34,6 +34,7 @@ require_once 'include/pmieducar/geral.inc.php'; require_once 'ComponenteCurricular/Model/AnoEscolarDataMapper.php'; require_once 'ComponenteCurricular/Model/ComponenteDataMapper.php'; +require_once 'Avaliacao/Fixups/CleanComponentesCurriculares.php'; /** * clsIndexBase class. @@ -467,6 +468,13 @@ function Editar() } } } + //Verifica/limpa disciplinas não alteradas quando a escola/série for editada e tiver disciplinas marcadas + //não padrão do ano letivo. + $obj_ano_letivo = new clsPmieducarEscolaAnoLetivo(); + $existe_ano_andamento = $obj_ano_letivo->lista($this->ref_cod_escola,null,null,null,1,null,null,null,null,1); + foreach ($existe_ano_andamento as $reg) { + CleanComponentesCurriculares::destroyOldResources($reg['ano']); + } } $this->mensagem .= 'Edição efetuada com sucesso.
'; diff --git a/ieducar/intranet/educar_turma_cad.php b/ieducar/intranet/educar_turma_cad.php index 109401c217..8b59aaf2d8 100644 --- a/ieducar/intranet/educar_turma_cad.php +++ b/ieducar/intranet/educar_turma_cad.php @@ -34,6 +34,7 @@ require_once 'include/pmieducar/geral.inc.php'; require_once 'Portabilis/String/Utils.php'; require_once 'lib/Portabilis/Date/Utils.php'; +require_once 'Avaliacao/Fixups/CleanComponentesCurriculares.php'; /** * clsIndexBase class. @@ -263,8 +264,6 @@ function Gerar() $this->campoLista('ref_ref_cod_serie', 'Série', $opcoes_serie, $this->ref_ref_cod_serie, '', FALSE, '', NULL, $bloqueia); - $this->campoOculto('ref_ref_cod_serie',$this->ref_ref_cod_serie); - // o campo ano somente é exibido para turmas novas ou cadastradas após inclusão deste campo. if ($anoVisivel){ $this->inputsHelper()->dynamic('anoLetivo', array('disabled' => $bloqueia)); @@ -964,6 +963,13 @@ function Editar() $this->disciplinas, $this->carga_horaria, $this->usar_componente ); + // Caso tenham sido selecionadas discplinas, como se trata de uma edição de turma será rodado uma consulta + // que limpa os Componentes Curriculares antigos. + if($this->disciplinas != 1){ + $anoLetivo = $this->ano ? $this->ano : date("Y"); + CleanComponentesCurriculares::destroyOldResources($anoLetivo); + } + if ($editou) { $this->mensagem .= 'Edição efetuada com sucesso.'; header('Location: educar_turma_lst.php'); diff --git a/ieducar/intranet/include/pmieducar/clsPmieducarMatriculaTurma.inc.php b/ieducar/intranet/include/pmieducar/clsPmieducarMatriculaTurma.inc.php index c85e6f2a31..32eb06d2d9 100644 --- a/ieducar/intranet/include/pmieducar/clsPmieducarMatriculaTurma.inc.php +++ b/ieducar/intranet/include/pmieducar/clsPmieducarMatriculaTurma.inc.php @@ -29,6 +29,7 @@ */ require_once 'include/pmieducar/geral.inc.php'; +require_once 'Avaliacao/Fixups/CleanComponentesCurriculares.php'; /** * clsPmieducarMatriculaTurma class. @@ -307,6 +308,8 @@ function cadastra() $db->Consulta("INSERT INTO {$this->_tabela} ($campos) VALUES ($valores)"); + $this->limpaComponentesCurriculares(); + return TRUE; } @@ -363,6 +366,7 @@ function edita() if ($set) { $db->Consulta("UPDATE {$this->_tabela} SET $set WHERE ref_cod_matricula = '{$this->ref_cod_matricula}' AND ref_cod_turma = '{$this->ref_cod_turma}' and sequencial = '$this->sequencial' "); + $this->limpaComponentesCurriculares(); return TRUE; } } @@ -1327,5 +1331,13 @@ function getSequencialFechamento($matriculaId, $turmaId, $dataEnturmacao){ return 0; }else return 0; - } + } + + function limpaComponentesCurriculares(){ + $db = new clsBanco(); + $ano = $db->CampoUnico("SELECT ano FROM pmieducar.matricula WHERE cod_matricula = {$this->ref_cod_matricula}"); + echo "$ano --"; + CleanComponentesCurriculares::destroyOldResources($ano, $this->ref_cod_matricula); + } + } diff --git a/ieducar/modules/Avaliacao/Fixups/CleanComponentesCurriculares.php b/ieducar/modules/Avaliacao/Fixups/CleanComponentesCurriculares.php index 6865200b52..88e5701aef 100644 --- a/ieducar/modules/Avaliacao/Fixups/CleanComponentesCurriculares.php +++ b/ieducar/modules/Avaliacao/Fixups/CleanComponentesCurriculares.php @@ -48,13 +48,18 @@ class CleanComponentesCurriculares { - public static function destroyOldResources($anoEscolar) { - self::destroyOldNotas($anoEscolar); - self::destroyOldNotasMedias($anoEscolar); - self::destroyOldFaltas($anoEscolar); + public static function destroyOldResources($anoEscolar, $cod_matricula = NULL) { + self::destroyOldNotas($anoEscolar, $cod_matricula); + self::destroyOldNotasMedias($anoEscolar, $cod_matricula); + self::destroyOldFaltas($anoEscolar, $cod_matricula); } - protected static function destroyOldNotas($anoEscolar) { + protected static function destroyOldNotas($anoEscolar, $cod_matricula) { + $filtro = ""; + + if (is_Numeric($cod_matricula)) + $filtro .= " m.cod_matricula = {$cod_matricula} AND "; + $sql = "delete from modules.nota_componente_curricular where id in ( select ncc.id from modules.nota_componente_curricular as ncc, modules.nota_aluno as na, @@ -67,6 +72,7 @@ protected static function destroyOldNotas($anoEscolar) { m.ativo = 1 and mt.ativo = m.ativo and m.ano = $1 and + {$filtro} --m.aprovado = 3 and CASE WHEN (select 1 from modules.componente_curricular_turma @@ -87,7 +93,12 @@ protected static function destroyOldNotas($anoEscolar) { self::fetchPreparedQuery($sql, array('params' => $anoEscolar)); } - protected static function destroyOldNotasMedias($anoEscolar) { + protected static function destroyOldNotasMedias($anoEscolar, $cod_matricula) { + $filtro = ""; + + if (is_Numeric($cod_matricula)) + $filtro .= " m.cod_matricula = {$cod_matricula} AND "; + $sql = "delete from modules.nota_componente_curricular_media where nota_aluno_id||componente_curricular_id in ( select nccm.nota_aluno_id|| nccm.componente_curricular_id from modules.nota_componente_curricular_media as nccm, modules.nota_aluno as na, @@ -100,6 +111,7 @@ protected static function destroyOldNotasMedias($anoEscolar) { m.ativo = 1 and mt.ativo = m.ativo and m.ano = $1 and + {$filtro} --m.aprovado = 3 and CASE WHEN (select 1 from modules.componente_curricular_turma @@ -120,7 +132,12 @@ protected static function destroyOldNotasMedias($anoEscolar) { self::fetchPreparedQuery($sql, array('params' => $anoEscolar)); } - protected static function destroyOldFaltas($anoEscolar) { + protected static function destroyOldFaltas($anoEscolar, $cod_matricula) { + $filtro = ""; + + if (is_Numeric($cod_matricula)) + $filtro .= " m.cod_matricula = {$cod_matricula} AND "; + $sql = "delete from modules.falta_componente_curricular where id in ( select fcc.id from modules.falta_componente_curricular as fcc, modules.falta_aluno as fa, @@ -133,6 +150,7 @@ protected static function destroyOldFaltas($anoEscolar) { m.ativo = 1 and mt.ativo = m.ativo and m.ano = $1 and + {$filtro} --m.aprovado = 3 and CASE WHEN (select 1 from modules.componente_curricular_turma