function Inicializar()
 {
     $retorno = "Novo";
     @session_start();
     $this->pessoa_logada = $_SESSION['id_pessoa'];
     @session_write_close();
     /**
      * verifica permissao para realizar operacao
      */
     $obj_permissoes = new clsPermissoes();
     $obj_permissoes->permissao_cadastra(561, $this->pessoa_logada, 7, "educar_escola_lst.php");
     /**
      * Somente inicia ano por POST
      */
     if (!$_POST) {
         header("location: educar_escola_lst.php");
         die;
     }
     foreach ($_POST as $key => $value) {
         $this->{$key} = $value;
     }
     /**
      *  Os 3 campos devem estar preenchidos para poder realizar acao
      */
     if (!$this->ref_cod_escola || !$this->tipo_acao || !$this->ano) {
         header("location: educar_escola_lst.php");
         die;
     }
     if (strtolower($this->tipo_acao) == 'editar') {
         /**
          * redirediona para a pagina de edicao do ano letivo
          */
         $referrer = @$HTTP_REFERER;
         header("location: educar_ano_letivo_modulo_cad.php?ref_cod_escola={$this->ref_cod_escola}&ano={$this->ano}&referrer=educar_escola_det.php");
         die;
     }
     /**
      * verifica se existe ano letivo
      */
     $obj_ano_letivo = new clsPmieducarEscolaAnoLetivo($this->ref_cod_escola, $this->ano, null, null, null, null, null, null);
     $det_ano = $obj_ano_letivo->detalhe();
     if (!$obj_ano_letivo->detalhe()) {
         header("location: educar_escola_lst.php");
         die;
     }
     /**
      * verifica se ano letivo da escola nao possui nenhuma matricula
      */
     if ($this->tipo_acao == "iniciar" && $det_ano['andamento'] == 0) {
         $this->iniciarAnoLetivo();
     } elseif ($this->tipo_acao == "finalizar" && $det_ano['andamento'] == 1) {
         $this->finalizarAnoLetivo();
     } else {
         header("location: educar_escola_det.php?cod_escola={$this->ref_cod_escola}#ano_letivo'");
         die;
     }
     /**
      * exibe mensagem e redireciona para detalhe da escola
      */
     echo "<script>\n\t\t\t\talert('Ano realizada com sucesso');\n\t\t\t\twindow.location = 'educar_escola_det.php?cod_escola={$this->ref_cod_escola}#ano_letivo';\n\t\t\t  </script>";
     header("location: educar_escola_lst.php");
     die;
 }
 function Inicializar()
 {
     $retorno = 'Novo';
     @session_start();
     $this->pessoa_logada = $_SESSION['id_pessoa'];
     @session_write_close();
     $this->ref_cod_modulo = $_GET['ref_cod_modulo'];
     $this->ref_ref_cod_escola = $_GET['ref_cod_escola'];
     $this->ref_ano = $_GET['ano'];
     $obj_permissoes = new clsPermissoes();
     $obj_permissoes->permissao_cadastra(561, $this->pessoa_logada, 7, 'educar_escola_lst.php');
     if (is_numeric($this->ref_ano) && is_numeric($this->ref_ref_cod_escola)) {
         $obj = new clsPmieducarEscolaAnoLetivo($this->ref_ref_cod_escola, $this->ref_ano);
         $registro = $obj->detalhe();
         if ($registro) {
             if ($obj_permissoes->permissao_excluir(561, $this->pessoa_logada, 7)) {
                 $this->fexcluir = TRUE;
             }
             $retorno = 'Editar';
         }
     }
     $this->url_cancelar = $_GET['referrer'] ? $_GET['referrer'] . '?cod_escola=' . $this->ref_ref_cod_escola : 'educar_escola_lst.php';
     $this->nome_url_cancelar = 'Cancelar';
     $nomeMenu = $retorno == "Editar" ? $retorno : "Cadastrar";
     $localizacao = new LocalizacaoSistema();
     $localizacao->entradaCaminhos(array($_SERVER['SERVER_NAME'] . "/intranet" => "In&iacute;cio", "educar_index.php" => "i-Educar - Escola", "" => "{$nomeMenu} m&oacute;dulos do ano letivo"));
     $this->enviaLocalizacao($localizacao->montar());
     return $retorno;
 }
 function Novo()
 {
     @session_start();
     $this->pessoa_logada = $_SESSION['id_pessoa'];
     @session_write_close();
     $obj_permissoes = new clsPermissoes();
     $obj_permissoes->permissao_cadastra(650, $this->pessoa_logada, 7, "educar_turma_mvto_det.php");
     $this->lst_matriculas = unserialize(urldecode($_POST["lst_matriculas"]));
     $this->cod_disciplinas = unserialize(urldecode($_POST["cod_disciplinas"]));
     $this->lst_apura_falta = unserialize(urldecode($_POST["lst_apura_falta"]));
     if (is_array($this->lst_matriculas)) {
         //			Verifica se o professor aprovou ou reprovou algum aluno
         if ($this->classifica == "S") {
             $obj_nota_aluno = new clsPmieducarNotaAluno();
             $lst_exame = $obj_nota_aluno->listaMedias($this->ref_ref_cod_serie, $this->ref_ref_cod_escola, $this->ref_cod_turma, $this->ref_cod_turma, $this->qtd_modulos, $this->ref_cod_curso, true, true, true);
             if ($lst_exame) {
                 foreach ($lst_exame as $exame) {
                     $obj_matricula = new clsPmieducarMatricula($exame["ref_ref_cod_matricula"]);
                     $det_matricula = $obj_matricula->detalhe();
                     if ($det_matricula) {
                         $obj_aluno = new clsPmieducarAluno($det_matricula["ref_cod_aluno"]);
                         $det_aluno = $obj_aluno->detalhe();
                         if ($det_aluno) {
                             $campo_aprovacao = "aprovacao_{$det_aluno["ref_idpes"]}_";
                             $campo_aluno = "nm_aluno_{$det_aluno["ref_idpes"]}";
                         }
                     }
                     if (isset($this->{$campo_aluno})) {
                         //							Verifica se a média é maior ou igual a média mínima e se foi aprovado pelo professor
                         if ($exame["media"] >= $this->media && $this->{$campo_aprovacao} == "on") {
                             //								Verifica se o aluno não foi reprovado ou deixado em exame
                             if ($aprovado[$exame["ref_ref_cod_matricula"]] != "N" && $aprovado[$exame["ref_ref_cod_matricula"]] != "R") {
                                 $aprovado[$exame["ref_ref_cod_matricula"]] = "S";
                             }
                         } else {
                             if ($exame["media"] < $this->media && $this->{$campo_aprovacao} == "on") {
                                 //								Verifica se o aluno não foi reprovado
                                 if ($aprovado[$exame["ref_ref_cod_matricula"]] != "N") {
                                     $aprovado[$exame["ref_ref_cod_matricula"]] = "R";
                                 }
                             } else {
                                 $aprovado[$exame["ref_ref_cod_matricula"]] = "N";
                             }
                         }
                     }
                 }
                 if (is_array($aprovado)) {
                     foreach ($aprovado as $matricula => $verificador) {
                         //							Verifica se o aluno foi aprovado ou deixado em exame
                         if ($verificador == "S" || $verificador == "R") {
                             $obj_matricula = new clsPmieducarMatricula($matricula);
                             $det_matricula = $obj_matricula->detalhe();
                             //								Verifica se a matrícula aida está em andamento
                             if ($det_matricula["aprovado"] == 3) {
                                 $obj_historico = new clsPmieducarHistoricoEscolar();
                                 $lst_historico = $obj_historico->lista($matricula);
                                 $seq = count($lst_historico) + 1;
                                 $obj_ano_letivo = new clsPmieducarEscolaAnoLetivo($this->ref_ref_cod_escola, null, null, null, 1, null, null, 1);
                                 $det_ano_letivo = $obj_ano_letivo->detalhe();
                                 $obj_escola = new clsPmieducarEscolaComplemento($this->ref_ref_cod_escola);
                                 $det_escola = $obj_escola->detalhe();
                                 //									Verifica se o aluno foi aprovado
                                 if ($verificador == "S") {
                                     $obj_historico = new clsPmieducarHistoricoEscolar($det_matricula["ref_cod_aluno"], $seq, null, $this->pessoa_logada, $this->ref_ref_cod_serie, $det_ano_letivo["ano"], $this->carga_horaria, null, $det_escola["nm_escola"], $det_escola["municipio"], null, null, 1, null, null, 1);
                                     if ($obj_historico->cadastra()) {
                                         $obj_matricula = new clsPmieducarMatricula($det_matricula["cod_matricula"], null, null, null, $this->pessoa_logada, null, null, 1);
                                         $obj_matricula->edita();
                                     } else {
                                         $this->mensagem = "Falha ao cadastrar o historico!<br>";
                                     }
                                 } else {
                                     if ($verificador == "R") {
                                         $obj_matricula = new clsPmieducarMatricula($det_matricula["cod_matricula"], null, null, null, $this->pessoa_logada, null, null, 7);
                                         if (!$obj_matricula->edita()) {
                                             $this->mensagem = "Falha ao editar a matricula!<br>";
                                         }
                                     }
                                 }
                             }
                         } else {
                             $obj_matricula = new clsPmieducarMatricula($matricula);
                             $det_matricula = $obj_matricula->detalhe();
                             //								Verifica se a matricula ainda está em andamento
                             if ($det_matricula["aprovado"] == 3) {
                                 $obj_historico = new clsPmieducarHistoricoEscolar();
                                 $lst_historico = $obj_historico->lista($matricula);
                                 $seq = count($lst_historico) + 1;
                                 $obj_ano_letivo = new clsPmieducarEscolaAnoLetivo($this->ref_ref_cod_escola, null, null, null, 1, null, null, 1);
                                 $det_ano_letivo = $obj_ano_letivo->detalhe();
                                 $obj_escola = new clsPmieducarEscolaComplemento($this->ref_ref_cod_escola);
                                 $det_escola = $obj_escola->detalhe();
                                 //									Verifica se o aluno foi reprovado
                                 if ($verificador == "N") {
                                     $obj_historico = new clsPmieducarHistoricoEscolar($det_matricula["ref_cod_aluno"], $seq, null, $this->pessoa_logada, $this->ref_ref_cod_serie, $det_ano_letivo["ano"], $this->carga_horaria, null, $det_escola["nm_escola"], $det_escola["municipio"], null, null, 2, null, null, 1);
                                     if ($obj_historico->cadastra()) {
                                         $obj_matricula = new clsPmieducarMatricula($det_matricula["cod_matricula"], null, null, null, $this->pessoa_logada, null, null, 2);
                                         if (!$obj_matricula->edita()) {
                                             $this->mensagem = "Falha ao alterar a matricula!<br>";
                                         }
                                     } else {
                                         $this->mensagem = "Falha ao cadastrar o historico!<br>";
                                     }
                                 }
                             }
                         }
                     }
                 }
             }
             header("location: educar_turma_mvto_det.php?cod_turma={$this->ref_cod_turma}");
             die;
         } else {
             foreach ($this->lst_matriculas as $matriculas) {
                 //					Verifica se o ano letivo ainda está em andamento
                 if ($this->num_modulo <= $this->qtd_modulos) {
                     //						Verifica se a disciplina apura falta
                     if ($this->lst_apura_falta[$this->ref_cod_disciplina] == 1) {
                         $campo_falta = "faltas_{$matriculas[1]}";
                     } else {
                         if ($this->falta_ch_globalizada == 1) {
                             $campo_falta = "faltas_{$matriculas[1]}";
                         }
                     }
                     $campo_nota = "nota_{$matriculas[1]}";
                     $obj_mat_tur = new clsPmieducarMatriculaTurma();
                     $lst_mat_tur = $obj_mat_tur->lista($matriculas[2], $this->ref_cod_turma, null, null, null, null, null, null, 1);
                     $sequencial = 0;
                     //echo "<pre>";
                     //print_r( $lst_mat_tur );
                     if (is_array($lst_mat_tur)) {
                         foreach ($lst_mat_tur as $registro) {
                             if ($sequencial == 0) {
                                 $sequencial = $registro["sequencial"];
                             } else {
                                 if ($sequencial < $registro["sequencial"]) {
                                     $sequencial = $registro["sequencial"];
                                 }
                             }
                         }
                         //$sequencial = ( count( $lst_mat_tur ) );
                         //$sequencial = $lst_mat_tur["sequencial"];
                     } else {
                         $this->mensagem = "Erro no cadastro de nota!<br>";
                     }
                     $obj_nota_aluno = new clsPmieducarNotaAluno(null, $this->{$campo_nota}, $this->ref_cod_tipo_avaliacao, $this->ref_ref_cod_serie, $this->ref_ref_cod_escola, $this->ref_cod_disciplina, $this->ref_cod_turma, $matriculas[2], $this->ref_cod_turma, null, $this->pessoa_logada, null, null, 1, $sequencial);
                     if (!$obj_nota_aluno->cadastra()) {
                         $this->mensagem = "Erro no cadastro de nota!<br>";
                     }
                     //						Verifica se a falta não é globalizada
                     if ($this->falta_ch_globalizada == 0) {
                         //							Verifica se a disciplina apura falta
                         if ($this->lst_apura_falta[$this->ref_cod_disciplina] == 1) {
                             //								Verifica se o aluno possui alguma falta
                             if ($this->{$campo_falta} > 0) {
                                 $obj_falta_aluno = new clsPmieducarFaltaAluno(null, null, $this->pessoa_logada, $this->ref_ref_cod_serie, $this->ref_ref_cod_escola, $this->ref_cod_disciplina, $this->ref_cod_turma, $this->ref_cod_turma, $matriculas[2], $this->{$campo_falta}, null, null, 1, $sequencial);
                                 if (!$obj_falta_aluno->cadastra()) {
                                     $this->mensagem = "Erro no cadastro de falta!<br>";
                                 }
                             }
                         }
                     } else {
                         if ($this->falta_ch_globalizada == 1) {
                             //							Verifica se o aluno possui alguma falta
                             if ($this->{$campo_falta} > 0) {
                                 $obj_faltas = new clsPmieducarFaltas();
                                 $lst_faltas = $obj_faltas->lista($matriculas[2]);
                                 $sequencial = count($lst_faltas) + 1;
                                 $obj_faltas = new clsPmieducarFaltas($matriculas[2], $sequencial, $this->pessoa_logada, $this->{$campo_falta});
                                 if (!$obj_faltas->cadastra()) {
                                     $this->mensagem = "Erro no cadastro de falta!<br>";
                                 }
                             }
                         }
                     }
                 }
             }
             //				Verifica se a turma está no último módulo
             if ($this->qtd_modulos == $this->num_modulo) {
                 $obj_matricula_turma = new clsPmieducarMatriculaTurma();
                 $lst_matricula_turma = $obj_matricula_turma->lista(null, $this->ref_cod_turma, null, null, null, null, null, null, 1);
                 if ($lst_matricula_turma) {
                     foreach ($lst_matricula_turma as $matricula) {
                         $obj_nota_aluno = new clsPmieducarNotaAluno();
                         //							Busca se todas as notas já foram dadas para o aluno
                         $todas_notas = $obj_nota_aluno->todasNotas($this->ref_ref_cod_serie, $this->ref_ref_cod_escola, $this->ref_cod_turma, $this->ref_cod_turma, $this->num_modulo, $matricula["ref_cod_matricula"]);
                         //							Verifica se todas as notas já foram dadas para o aluno
                         if ($todas_notas == 'S') {
                             if ($this->conceitual == 0) {
                                 //									Carrega as médias de cada disciplina do aluno
                                 $lst_exame = $obj_nota_aluno->listaMedias($this->ref_ref_cod_serie, $this->ref_ref_cod_escola, $this->ref_cod_turma, $this->ref_cod_turma, $this->qtd_modulos, $this->ref_cod_curso, true, true);
                                 if ($lst_exame) {
                                     foreach ($lst_exame as $exame) {
                                         if ($exame["ref_ref_cod_matricula"] == $matricula["ref_cod_matricula"]) {
                                             //												Verifica se a média do aluno é igual ou superior a média mínima e se a freqüência do aluno é igual ou maior que a freqüência mínima
                                             if ($exame["media"] >= $this->media && 100 - $exame["faltas"] >= $this->frequencia_minima) {
                                                 //													Verifica se o aluno não foi reprovado ou deixado de recuperação
                                                 if ($aprovado[$exame["ref_ref_cod_matricula"]] != "N" && $aprovado[$exame["ref_ref_cod_matricula"]] != "R") {
                                                     $aprovado[$exame["ref_ref_cod_matricula"]] = "S";
                                                 }
                                             } else {
                                                 if ($exame["media"] < $this->media && 100 - $exame["faltas"] >= $this->frequencia_minima) {
                                                     //													Verifica se o aluno não foi reprovado
                                                     if ($aprovado[$exame["ref_ref_cod_matricula"]] != "N") {
                                                         $aprovado[$exame["ref_ref_cod_matricula"]] = "R";
                                                     }
                                                 } else {
                                                     $aprovado[$exame["ref_ref_cod_matricula"]] = "N";
                                                 }
                                             }
                                         }
                                     }
                                 }
                             }
                             if ($this->conceitual == 1) {
                                 $obj_aluno = new clsPmieducarAluno($matricula["ref_cod_aluno"]);
                                 $det_aluno = $obj_aluno->detalhe();
                                 $campo_aprovacao = "aprovacao_{$det_aluno["ref_idpes"]}";
                                 if ($this->{$campo_aprovacao} == "S") {
                                     $aprovado[$matricula["ref_cod_matricula"]] = "S";
                                 } elseif ($this->{$campo_aprovacao} == "N") {
                                     $aprovado[$matricula["ref_cod_matricula"]] = "N";
                                 }
                             }
                         }
                     }
                 }
                 if (is_array($aprovado)) {
                     foreach ($aprovado as $matricula => $verificador) {
                         //							Verifica se o aluno foi aprovado ou deixado em exame
                         if ($verificador == "S" || $verificador == "R") {
                             $obj_matricula = new clsPmieducarMatricula($matricula);
                             $det_matricula = $obj_matricula->detalhe();
                             //								Verifica se a matrícula está em andamento
                             if ($det_matricula["aprovado"] == 3) {
                                 $obj_historico = new clsPmieducarHistoricoEscolar();
                                 $lst_historico = $obj_historico->lista($matricula);
                                 $seq = count($lst_historico) + 1;
                                 $obj_ano_letivo = new clsPmieducarEscolaAnoLetivo($this->ref_ref_cod_escola, null, null, null, 1, null, null, 1);
                                 $det_ano_letivo = $obj_ano_letivo->detalhe();
                                 $obj_escola = new clsPmieducarEscolaComplemento($this->ref_ref_cod_escola);
                                 $det_escola = $obj_escola->detalhe();
                                 //									Verifica se o aluno foi aprovado
                                 if ($verificador == "S") {
                                     if ($this->falta_ch_globalizada == 1) {
                                         $obj_historico = new clsPmieducarHistoricoEscolar($det_matricula["ref_cod_aluno"], $seq, null, $this->pessoa_logada, $this->ref_ref_cod_serie, $det_ano_letivo["ano"], $this->carga_horaria, null, $det_escola["nm_escola"], $det_escola["municipio"], null, null, 1, null, null, 1, 1);
                                     } else {
                                         $obj_historico = new clsPmieducarHistoricoEscolar($det_matricula["ref_cod_aluno"], $seq, null, $this->pessoa_logada, $this->ref_ref_cod_serie, $det_ano_letivo["ano"], $this->carga_horaria, null, $det_escola["nm_escola"], $det_escola["municipio"], null, null, 1, null, null, 1, 0);
                                     }
                                     if ($obj_historico->cadastra()) {
                                         $obj_matricula = new clsPmieducarMatricula($det_matricula["cod_matricula"], null, null, null, $this->pessoa_logada, null, null, 1);
                                         if ($obj_matricula->edita()) {
                                             $this->mensagem = "Falha ao editar a matricula!<br>";
                                         }
                                     } else {
                                         $this->mensagem = "Falha ao cadastrar o historico!<br>";
                                     }
                                 } else {
                                     if ($verificador == "R") {
                                         $obj_matricula = new clsPmieducarMatricula($det_matricula["cod_matricula"], null, null, null, $this->pessoa_logada, null, null, 7);
                                         if (!$obj_matricula->edita()) {
                                             $this->mensagem = "Falha ao editar a matricula!<br>";
                                         }
                                     }
                                 }
                             }
                         } else {
                             if ($verificador == "N" && $this->conceitual == 1) {
                                 $obj_matricula = new clsPmieducarMatricula($matricula);
                                 $det_matricula = $obj_matricula->detalhe();
                                 if ($det_matricula["aprovado"] == 3) {
                                     $obj_historico = new clsPmieducarHistoricoEscolar();
                                     $lst_historico = $obj_historico->lista($matricula);
                                     $seq = count($lst_historico) + 1;
                                     $obj_ano_letivo = new clsPmieducarEscolaAnoLetivo($this->ref_ref_cod_escola, null, null, null, 1, null, null, 1);
                                     $det_ano_letivo = $obj_ano_letivo->detalhe();
                                     $obj_escola = new clsPmieducarEscolaComplemento($this->ref_ref_cod_escola);
                                     $det_escola = $obj_escola->detalhe();
                                     if ($this->falta_ch_globalizada == 1) {
                                         $obj_historico = new clsPmieducarHistoricoEscolar($det_matricula["ref_cod_aluno"], $seq, null, $this->pessoa_logada, $this->ref_ref_cod_serie, $det_ano_letivo["ano"], $this->carga_horaria, null, $det_escola["nm_escola"], $det_escola["municipio"], null, null, 2, null, null, 1, 1);
                                     } else {
                                         $obj_historico = new clsPmieducarHistoricoEscolar($det_matricula["ref_cod_aluno"], $seq, null, $this->pessoa_logada, $this->ref_ref_cod_serie, $det_ano_letivo["ano"], $this->carga_horaria, null, $det_escola["nm_escola"], $det_escola["municipio"], null, null, 2, null, null, 1, 0);
                                     }
                                     if ($obj_historico->cadastra()) {
                                         $obj_matricula = new clsPmieducarMatricula($det_matricula["cod_matricula"], null, null, null, $this->pessoa_logada, null, null, 2);
                                         if ($obj_matricula->edita()) {
                                             $this->mensagem = "Falha ao editar a matricula!<br>";
                                         }
                                     } else {
                                         $this->mensagem = "Falha ao cadastrar o historico!<br>";
                                     }
                                 }
                             }
                         }
                     }
                 }
                 $obj_turma_modulo = new clsPmieducarTurmaModulo();
                 $fimAnoLetivo = $obj_turma_modulo->fimAno($this->ref_cod_turma, $this->qtd_modulos);
                 //					$total_notas = $obj_nota_aluno->retornaTotalNotas( $this->ref_ref_cod_serie, $this->ref_ref_cod_escola, $this->ref_cod_turma, $this->ref_cod_turma );
                 //					if ( $total_notas == ( $this->qtd_modulos * $this->qtd_disciplinas ) )
                 if ($fimAnoLetivo == "S") {
                     header("location: educar_turma_mvto_det.php?cod_turma={$this->ref_cod_turma}");
                     die;
                 } else {
                     header("location: educar_turma_nota_cad.php?ref_cod_turma={$this->ref_cod_turma}&ref_ref_cod_escola={$this->ref_ref_cod_escola}&ref_ref_cod_serie={$this->ref_ref_cod_serie}&ref_cod_curso={$this->ref_cod_curso}");
                     die;
                 }
             } else {
                 if ($this->exame == "S") {
                     foreach ($this->lst_matriculas as $matriculas) {
                         //						Verifica se todos os módulos já terminaram
                         if ($this->num_modulo > $this->qtd_modulos) {
                             $campo_nota = "nota_{$matriculas[1]}";
                             $obj_mat_tur = new clsPmieducarMatriculaTurma();
                             $lst_mat_tur = $obj_mat_tur->lista($matriculas[2], $this->ref_cod_turma, null, null, null, null, null, null, 1);
                             if (is_array($lst_mat_tur)) {
                                 //$sequencial = ( count( $lst_mat_tur ) );
                                 $sequencial = $lst_mat_tur["sequencial"];
                             } else {
                                 $this->mensagem = "Erro no cadastro de nota!<br>";
                             }
                             $obj_nota_aluno = new clsPmieducarNotaAluno(null, $this->{$campo_nota}, $this->ref_cod_tipo_avaliacao, $this->ref_ref_cod_serie, $this->ref_ref_cod_escola, $this->ref_cod_disciplina, $this->ref_cod_turma, $matriculas[2], $this->ref_cod_turma, null, $this->pessoa_logada, null, null, 1, $sequencial);
                             if (!$obj_nota_aluno->cadastra()) {
                                 $this->mensagem = "Erro no cadastro de nota!<br>";
                             }
                             $obj_nota_aluno = new clsPmieducarNotaAluno();
                             $lst_exame = $obj_nota_aluno->listaMedias($this->ref_ref_cod_serie, $this->ref_ref_cod_escola, $this->ref_cod_turma, $this->ref_cod_turma, $this->qtd_modulos, $this->ref_cod_curso, true, true, false, true);
                             $obj_turma_disciplina = new clsPmieducarTurmaDisciplina();
                             //							Carrega o código das disciplinas da turma
                             $lst_turma_disciplina = $obj_turma_disciplina->lista($this->ref_cod_turma);
                             if (is_array($lst_turma_disciplina)) {
                                 //								Carrega a quantidade de disciplinas da turma
                                 $this->qtd_disciplinas = count($lst_turma_disciplina);
                                 foreach ($lst_turma_disciplina as $valores) {
                                     $obj_disciplina = new clsPmieducarDisciplina($valores["ref_cod_disciplina"]);
                                     $det_disciplina = $obj_disciplina->detalhe();
                                     if ($det_disciplina) {
                                         $obj_dispensa = new clsPmieducarDispensaDisciplina();
                                         $det_dispensa = $obj_dispensa->lista($this->ref_cod_turma, $matriculas[2], $this->ref_cod_turma, $this->ref_ref_cod_serie, $this->ref_ref_cod_escola, $det_disciplina["cod_disciplina"], null, null, null, null, null, null, null, 1);
                                         //										Verifica se o aluno não foi dispensado da disciplina
                                         if (!is_array($det_dispensa)) {
                                             $obj_notas = new clsPmieducarNotaAluno();
                                             //											Carrega a quantidade de notas por aluno de uma turma numa determinada disciplina
                                             $lst_notas = $obj_notas->retornaDiscMod($this->ref_ref_cod_serie, $this->ref_ref_cod_escola, $det_disciplina["cod_disciplina"], $this->ref_cod_turma, $this->ref_cod_turma, $matriculas[2]);
                                             //											Carrega a média da disciplina
                                             if ($lst_exame) {
                                                 foreach ($lst_exame as $exame) {
                                                     if ($exame["disc_ref_ref_cod_disciplina"] == $det_disciplina["cod_disciplina"] && $exame["ref_ref_cod_matricula"] == $matriculas[2]) {
                                                         $media_disciplina = $exame["media"];
                                                     }
                                                 }
                                             }
                                             if ($lst_notas == $this->qtd_modulos) {
                                                 if ($media_disciplina >= $this->media) {
                                                     $pula_disciplina = false;
                                                 } else {
                                                     $pula_disciplina = true;
                                                 }
                                             } else {
                                                 $pula_disciplina = true;
                                             }
                                             if ($pula_disciplina) {
                                                 if (!is_array($det_dispensa)) {
                                                     //													Verifica se a quantidade de notas por aluno é diferente do número do módulo em que a turma se encontra
                                                     if ($lst_notas == $this->qtd_modulos + 1) {
                                                         if ($salva_historico != "N") {
                                                             $lst_disc_exame[$det_disciplina["cod_disciplina"]] = "S";
                                                             $salva_historico = "S";
                                                         }
                                                     } else {
                                                         $salva_historico = "N";
                                                     }
                                                 }
                                             }
                                         }
                                     }
                                 }
                             }
                             if ($salva_historico == "S") {
                                 $lst_exame = $obj_nota_aluno->listaMedias($this->ref_ref_cod_serie, $this->ref_ref_cod_escola, $this->ref_cod_turma, $this->ref_cod_turma, $this->qtd_modulos + 1, $this->ref_cod_curso, true, true, false, true);
                                 if ($lst_exame) {
                                     foreach ($lst_exame as $exame) {
                                         if ($exame["ref_ref_cod_matricula"] == $matriculas[2] && $lst_disc_exame[$exame["disc_ref_ref_cod_disciplina"]] == "S") {
                                             //											Verifica se a média do aluno é igual ou superior a média mínima
                                             if ($exame["media"] >= $this->media_exame) {
                                                 //												Verifica se o aluno não foi reprovado
                                                 if ($aprovado[$exame["ref_ref_cod_matricula"]] != "N") {
                                                     $aprovado[$exame["ref_ref_cod_matricula"]] = "S";
                                                 }
                                             } else {
                                                 $aprovado[$exame["ref_ref_cod_matricula"]] = "N";
                                             }
                                         }
                                     }
                                 }
                             }
                             if (is_array($aprovado)) {
                                 foreach ($aprovado as $matricula => $verificador) {
                                     //									Verifica se o aluno foi aprovado
                                     if ($verificador == "S") {
                                         $obj_matricula = new clsPmieducarMatricula($matricula);
                                         $det_matricula = $obj_matricula->detalhe();
                                         //										Verifica se a matrícula está em exame
                                         if ($det_matricula["aprovado"] == 7) {
                                             $obj_historico = new clsPmieducarHistoricoEscolar();
                                             $lst_historico = $obj_historico->lista($matricula);
                                             $seq = count($lst_historico) + 1;
                                             $obj_ano_letivo = new clsPmieducarEscolaAnoLetivo($this->ref_ref_cod_escola, null, null, null, 1, null, null, 1);
                                             $det_ano_letivo = $obj_ano_letivo->detalhe();
                                             $obj_escola = new clsPmieducarEscolaComplemento($this->ref_ref_cod_escola);
                                             $det_escola = $obj_escola->detalhe();
                                             //											Verifica se o aluno foi aprovado
                                             if ($verificador == "S") {
                                                 if ($this->falta_ch_globalizada == 1) {
                                                     $obj_historico = new clsPmieducarHistoricoEscolar($det_matricula["ref_cod_aluno"], $seq, null, $this->pessoa_logada, $this->ref_ref_cod_serie, $det_ano_letivo["ano"], $this->carga_horaria, null, $det_escola["nm_escola"], $det_escola["municipio"], null, null, 1, null, null, 1, 1);
                                                 } else {
                                                     $obj_historico = new clsPmieducarHistoricoEscolar($det_matricula["ref_cod_aluno"], $seq, null, $this->pessoa_logada, $this->ref_ref_cod_serie, $det_ano_letivo["ano"], $this->carga_horaria, null, $det_escola["nm_escola"], $det_escola["municipio"], null, null, 1, null, null, 1, 0);
                                                 }
                                                 if ($obj_historico->cadastra()) {
                                                     $obj_matricula = new clsPmieducarMatricula($det_matricula["cod_matricula"], null, null, null, $this->pessoa_logada, null, null, 1);
                                                     if ($obj_matricula->edita()) {
                                                         $this->mensagem = "Falha ao editar a matricula!<br>";
                                                     }
                                                 } else {
                                                     $this->mensagem = "Falha ao cadastrar o historico!<br>";
                                                 }
                                             }
                                         }
                                     }
                                     //									Verifica se o aluno foi reprovado
                                     if ($verificador == "N") {
                                         $obj_historico = new clsPmieducarHistoricoEscolar();
                                         $lst_historico = $obj_historico->lista($matriculas[0]);
                                         $seq = count($lst_historico) + 1;
                                         $obj_ano_letivo = new clsPmieducarEscolaAnoLetivo($this->ref_ref_cod_escola, null, null, null, 1, null, null, 1);
                                         $det_ano_letivo = $obj_ano_letivo->detalhe();
                                         $obj_escola = new clsPmieducarEscolaComplemento($this->ref_ref_cod_escola);
                                         $det_escola = $obj_escola->detalhe();
                                         if ($this->falta_ch_globalizada == 1) {
                                             $obj_historico = new clsPmieducarHistoricoEscolar($matriculas[0], $seq, null, $this->pessoa_logada, $this->ref_ref_cod_serie, $det_ano_letivo["ano"], $this->carga_horaria, null, $det_escola["nm_escola"], $det_escola["municipio"], null, null, 2, null, null, 1, 1);
                                         } else {
                                             $obj_historico = new clsPmieducarHistoricoEscolar($matriculas[0], $seq, null, $this->pessoa_logada, $this->ref_ref_cod_serie, $det_ano_letivo["ano"], $this->carga_horaria, null, $det_escola["nm_escola"], $det_escola["municipio"], null, null, 2, null, null, 1, 0);
                                         }
                                         if ($obj_historico->cadastra()) {
                                             $obj_matricula = new clsPmieducarMatricula($matricula, null, null, null, $this->pessoa_logada, null, null, 2);
                                             if (!$obj_matricula->edita()) {
                                                 $this->mensagem = "Falha ao alterar a matricula!<br>";
                                             }
                                         } else {
                                             $this->mensagem = "Falha ao cadastrar o historico!<br>";
                                         }
                                     }
                                 }
                             }
                             header("location: educar_turma_nota_cad.php?ref_cod_turma={$this->ref_cod_turma}&ref_ref_cod_escola={$this->ref_ref_cod_escola}&ref_ref_cod_serie={$this->ref_ref_cod_serie}&ref_cod_curso={$this->ref_cod_curso}");
                             die;
                         }
                     }
                 }
             }
             header("location: educar_turma_nota_cad.php?ref_cod_turma={$this->ref_cod_turma}&ref_ref_cod_escola={$this->ref_ref_cod_escola}&ref_ref_cod_serie={$this->ref_ref_cod_serie}&ref_cod_curso={$this->ref_cod_curso}");
             die;
         }
     }
 }
 function Inicializar()
 {
     $retorno = 'Novo';
     @session_start();
     $this->pessoa_logada = $_SESSION['id_pessoa'];
     @session_write_close();
     $this->ref_cod_modulo = $_GET['ref_cod_modulo'];
     $this->ref_ref_cod_escola = $_GET['ref_cod_escola'];
     $this->ref_ano = $_GET['ano'];
     $obj_permissoes = new clsPermissoes();
     $obj_permissoes->permissao_cadastra(561, $this->pessoa_logada, 7, 'educar_escola_lst.php');
     if (is_numeric($this->ref_ano) && is_numeric($this->ref_ref_cod_escola)) {
         $obj = new clsPmieducarEscolaAnoLetivo($this->ref_ref_cod_escola, $this->ref_ano);
         $registro = $obj->detalhe();
         if ($registro) {
             if ($obj_permissoes->permissao_excluir(561, $this->pessoa_logada, 7)) {
                 $this->fexcluir = TRUE;
             }
             $retorno = 'Editar';
         }
     }
     $this->url_cancelar = $_GET['referrer'] ? $_GET['referrer'] . '?cod_escola=' . $this->ref_ref_cod_escola : 'educar_escola_lst.php';
     $this->nome_url_cancelar = 'Cancelar';
     return $retorno;
 }
 /**
  * Cria um novo registro
  *
  * @return bool
  */
 function cadastra()
 {
     if (is_numeric($this->ref_ano) && is_numeric($this->ref_ref_cod_escola) && is_numeric($this->sequencial) && is_numeric($this->ref_cod_modulo) && is_string($this->data_inicio) && is_string($this->data_fim)) {
         $db = new clsBanco();
         $campos = "";
         $valores = "";
         $gruda = "";
         if (is_numeric($this->ref_ano)) {
             $campos .= "{$gruda}ref_ano";
             $valores .= "{$gruda}'{$this->ref_ano}'";
             $gruda = ", ";
         }
         if (is_numeric($this->ref_ref_cod_escola)) {
             $campos .= "{$gruda}ref_ref_cod_escola";
             $valores .= "{$gruda}'{$this->ref_ref_cod_escola}'";
             $gruda = ", ";
         }
         if (is_numeric($this->sequencial)) {
             $campos .= "{$gruda}sequencial";
             $valores .= "{$gruda}'{$this->sequencial}'";
             $gruda = ", ";
         }
         if (is_numeric($this->ref_cod_modulo)) {
             $campos .= "{$gruda}ref_cod_modulo";
             $valores .= "{$gruda}'{$this->ref_cod_modulo}'";
             $gruda = ", ";
         }
         if (is_string($this->data_inicio)) {
             $campos .= "{$gruda}data_inicio";
             $valores .= "{$gruda}'{$this->data_inicio}'";
             $gruda = ", ";
         }
         if (is_string($this->data_fim)) {
             $campos .= "{$gruda}data_fim";
             $valores .= "{$gruda}'{$this->data_fim}'";
             $gruda = ", ";
         }
         // ativa escolaAnoLetivo se estiver desativado
         // (quando o escolaAnoLetivo é 'excluido' o registro não é removido)
         $escolaAnoLetivo = new clsPmieducarEscolaAnoLetivo($this->ref_ref_cod_escola, $this->ref_ano, null, $_SESSION['id_pessoa'], null, null, null, 1);
         $escolaAnoLetivoDetalhe = $escolaAnoLetivo->detalhe();
         if (isset($escolaAnoLetivoDetalhe['ativo']) and $escolaAnoLetivoDetalhe['ativo'] != '1') {
             $escolaAnoLetivo->edita();
         }
         $db->Consulta("INSERT INTO {$this->_tabela} ( {$campos} ) VALUES( {$valores} )");
         return true;
     }
     return false;
 }