function Novo()
 {
     @session_start();
     $this->pessoa_logada = $_SESSION['id_pessoa'];
     $this->ref_cod_cliente = $_SESSION['reservas']['cod_cliente'];
     @session_write_close();
     if ($this->passo == 2) {
         return true;
     }
     $obj_permissoes = new clsPermissoes();
     $obj_permissoes->permissao_cadastra(609, $this->pessoa_logada, 11, "educar_reservas_lst.php");
     $obj_acervo = new clsPmieducarAcervo($this->ref_cod_acervo);
     $det_acervo = $obj_acervo->detalhe();
     // tipo de exemplar
     $cod_exemplar_tipo = $det_acervo["ref_cod_exemplar_tipo"];
     if ($this->existe_reserva == 1) {
         //			die("1");
         //			echo "EMPRESTIMO <br>";
         // ------------------- DADOS DO CLIENTE (EMPRESTIMO) ------------------ //
         $obj_exemplar_emprestimo = new clsPmieducarExemplarEmprestimo();
         $lst_exemplar_emprestimo = $obj_exemplar_emprestimo->lista(null, null, null, null, $this->ref_cod_exemplar, null, null, null, null, null, false, $this->ref_cod_biblioteca);
         if (is_array($lst_exemplar_emprestimo) && count($lst_exemplar_emprestimo)) {
             $det_exemplar_emprestimo = array_shift($lst_exemplar_emprestimo);
             $cod_cliente = $det_exemplar_emprestimo["ref_cod_cliente"];
             // data do emprestimo
             $data_retirada = $det_exemplar_emprestimo["data_retirada"];
             $data_prevista_disponivel = dataFromPgToBr($data_retirada, "Y-m-d");
         } else {
             echo "<script> alert('ERRO - Não foi possível encontrar o registro do empréstimo!'); </script>";
         }
     } else {
         if ($this->existe_reserva == 2) {
             //			die("2");
             //			echo "RESERVA <br>";
             // ------------------- DADOS DO CLIENTE (RESERVA) ------------------ //
             $obj_reservas = new clsPmieducarReservas();
             $lst_reservas = $obj_reservas->lista(null, null, null, null, null, null, $this->data_disponivel, $this->data_disponivel, null, null, $this->ref_cod_exemplar, 1, $this->ref_cod_biblioteca);
             if (is_array($lst_reservas) && count($lst_reservas)) {
                 $det_reservas = array_shift($lst_reservas);
                 $cod_cliente = $det_reservas["ref_cod_cliente"];
                 // data da reserva
                 $data_prevista_disponivel = $this->data_disponivel;
             } else {
                 echo "<script> alert('ERRO - Não foi possível encontrar a reserva!'); </script>";
             }
         }
     }
     //		echo "data_prevista_disponivel 1: ".$data_prevista_disponivel."<br>";
     $obj_cliente_tipo_cliente = new clsPmieducarClienteTipoCliente();
     $lst_cliente_tipo_cliente = $obj_cliente_tipo_cliente->lista(null, $cod_cliente, null, null, null, null, null, null, $this->ref_cod_biblioteca);
     $det_cliente_tipo_cliente = array_shift($lst_cliente_tipo_cliente);
     // tipo do cliente
     $cod_cliente_tipo = $det_cliente_tipo_cliente["ref_cod_cliente_tipo"];
     $obj_cliente_tipo_exemplar_tipo = new clsPmieducarClienteTipoExemplarTipo($cod_cliente_tipo, $cod_exemplar_tipo);
     $det_cliente_tipo_exemplar_tipo = $obj_cliente_tipo_exemplar_tipo->detalhe();
     // qtde de dias disponiveis para emprestimo
     $dias_emprestimo = $det_cliente_tipo_exemplar_tipo["dias_emprestimo"];
     //		echo "dias_espera: ".$this->dias_espera."<br>";
     if ($this->existe_reserva == 2) {
         // Dias que o cliente tem pra pegar o exemplar. Calculo feito levando em consideracao a pior situacao.
         $data_prevista_disponivel = date("D Y-m-d", strtotime("{$data_prevista_disponivel} +" . $this->dias_espera . " days"));
     }
     //		echo "data_prevista_disponivel 2: ".$data_prevista_disponivel."<br>";
     $data_prevista_disponivel = date("D Y-m-d", strtotime("{$data_prevista_disponivel} +" . $dias_emprestimo . " days"));
     //		echo "data_prevista_disponivel 3: ".$data_prevista_disponivel."<br>";
     //---------------------DIAS FUNCIONAMENTO----------------------//
     $obj_biblioteca_dia = new clsPmieducarBibliotecaDia();
     $lst_biblioteca_dia = $obj_biblioteca_dia->lista($this->ref_cod_biblioteca);
     if (is_array($lst_biblioteca_dia) && count($lst_biblioteca_dia)) {
         foreach ($lst_biblioteca_dia as $dia_semana) {
             // dias de funcionamento da biblioteca
             $biblioteca_dias_semana[] = $dia_semana["dia"];
         }
     }
     // salva somente os dias que n se repetem ( dias de n funcionamento)
     $biblioteca_dias_folga = array_diff($this->dias_da_semana, $biblioteca_dias_semana);
     // inverte as relacoes entre chaves e valores ( de $variavel["Sun"] => 1, para $variavel[1] => "Sun")
     $biblioteca_dias_folga = array_flip($biblioteca_dias_folga);
     //---------------------DIAS FERIADO----------------------//
     $obj_biblioteca_feriado = new clsPmieducarBibliotecaFeriados();
     $lst_biblioteca_feriado = $obj_biblioteca_feriado->lista(null, $this->ref_cod_biblioteca);
     if (is_array($lst_biblioteca_feriado) && count($lst_biblioteca_feriado)) {
         foreach ($lst_biblioteca_feriado as $dia_feriado) {
             // dias de feriado da biblioteca
             $biblioteca_dias_feriado[] = dataFromPgToBr($dia_feriado["data_feriado"], "D Y-m-d");
         }
     }
     //		echo "<pre>"; print_r($biblioteca_dias_feriado)."<br>";
     // Cliente tem o dia inteiro para entregar o exemplar. Exemplar somente disponivel para a proxima reserva no dia seguinte.
     $data_prevista_disponivel = date("D Y-m-d ", strtotime("{$data_prevista_disponivel} +1 day"));
     // devido a comparacao das datas, é necessario mudar o formato da data
     $data_prevista_disponivel = dataFromPgToBr($data_prevista_disponivel, "D Y-m-d");
     //		echo "data_prevista_disponivel 4: ".$data_prevista_disponivel."<br>";
     // verifica se a data cai em algum dia que a biblioteca n funciona
     while (in_array(substr($data_prevista_disponivel, 0, 3), $biblioteca_dias_folga) || in_array($data_prevista_disponivel, $biblioteca_dias_feriado)) {
         //			echo "data_prevista_disponivel ASDFG = ".$data_prevista_disponivel."<br>";
         $data_prevista_disponivel = date("D Y-m-d ", strtotime("{$data_prevista_disponivel} +1 day"));
         $data_prevista_disponivel = dataFromPgToBr($data_prevista_disponivel, "D Y-m-d");
         //			echo "data_prevista_disponivel ASDFG = ".$data_prevista_disponivel."<br>";
     }
     //		echo "data_prevista_disponivel 5: ".$data_prevista_disponivel."<br>";die;
     $data_prevista_disponivel = dataFromPgToBr($data_prevista_disponivel, "Y-m-d");
     $obj = new clsPmieducarReservas(null, null, $this->pessoa_logada, $this->ref_cod_cliente, null, $data_prevista_disponivel, null, $this->ref_cod_exemplar, 1);
     $cadastrou = $obj->cadastra();
     if ($cadastrou) {
         $this->mensagem .= "Cadastro efetuado com sucesso.<br>";
         header("Location: educar_reservas_lst.php");
         die;
         return true;
     }
     $this->mensagem = "Cadastro n&atilde;o realizado.<br>";
     echo "<!--\nErro ao cadastrar clsPmieducarReservas\nvalores obrigatorios\n is_numeric( {$this->pessoa_logada} ) && is_numeric( {$this->ref_cod_cliente} ) && is_numeric( {$this->ref_cod_exemplar} )\n-->";
     return false;
 }
 function Gerar()
 {
     @session_start();
     $this->pessoa_logada = $_SESSION['id_pessoa'];
     session_write_close();
     $this->titulo = "Tipo Exemplar - Detalhe";
     $this->cod_exemplar_tipo = $_GET["cod_exemplar_tipo"];
     $tmp_obj = new clsPmieducarExemplarTipo($this->cod_exemplar_tipo);
     $registro = $tmp_obj->detalhe();
     if (!$registro) {
         header("location: educar_exemplar_tipo_lst.php");
         die;
     }
     if (class_exists("clsPmieducarBiblioteca")) {
         $obj_ref_cod_biblioteca = new clsPmieducarBiblioteca($registro["ref_cod_biblioteca"]);
         $det_ref_cod_biblioteca = $obj_ref_cod_biblioteca->detalhe();
         $registro["ref_cod_biblioteca"] = $det_ref_cod_biblioteca["nm_biblioteca"];
         $registro["ref_cod_instituicao"] = $det_ref_cod_biblioteca["ref_cod_instituicao"];
         $registro["ref_cod_escola"] = $det_ref_cod_biblioteca["ref_cod_escola"];
         if ($registro["ref_cod_instituicao"]) {
             $obj_ref_cod_instituicao = new clsPmieducarInstituicao($registro["ref_cod_instituicao"]);
             $det_ref_cod_instituicao = $obj_ref_cod_instituicao->detalhe();
             $registro["ref_cod_instituicao"] = $det_ref_cod_instituicao["nm_instituicao"];
         }
         if ($registro["ref_cod_escola"]) {
             $obj_ref_cod_escola = new clsPmieducarEscola();
             $det_ref_cod_escola = array_shift($obj_ref_cod_escola->lista($registro["ref_cod_escola"]));
             $registro["ref_cod_escola"] = $det_ref_cod_escola["nome"];
         }
     } else {
         $registro["ref_cod_biblioteca"] = "Erro na gera&ccedil;&atilde;o";
         echo "<!--\nErro\nClasse n&atilde;o existente: clsPmieducarBiblioteca\n-->";
     }
     $obj_permissoes = new clsPermissoes();
     $nivel_usuario = $obj_permissoes->nivel_acesso($this->pessoa_logada);
     if ($registro["ref_cod_instituicao"] && $nivel_usuario == 1) {
         $this->addDetalhe(array("Institui&ccedil;&atilde;o", "{$registro["ref_cod_instituicao"]}"));
     }
     if ($registro["ref_cod_escola"] && ($nivel_usuario == 1 || $nivel_usuario == 2)) {
         $this->addDetalhe(array("Escola", "{$registro["ref_cod_escola"]}"));
     }
     if ($registro["ref_cod_biblioteca"] && ($nivel_usuario == 1 || $nivel_usuario == 2 || $nivel_usuario == 4)) {
         $this->addDetalhe(array("Biblioteca", "{$registro["ref_cod_biblioteca"]}"));
     }
     if ($registro["nm_tipo"]) {
         $this->addDetalhe(array("Tipo Exemplar", "{$registro["nm_tipo"]}"));
     }
     if ($registro["descricao"]) {
         $this->addDetalhe(array("Descri&ccedil;&atilde;o", "{$registro["descricao"]}"));
     }
     $obj_cliente_tp_exemplar_tp = new clsPmieducarClienteTipoExemplarTipo();
     $lst_cliente_tp_exemplar_tp = $obj_cliente_tp_exemplar_tp->lista(null, $this->cod_exemplar_tipo);
     if ($lst_cliente_tp_exemplar_tp) {
         $tabela = "<TABLE>\n\t\t\t\t\t       <TR align=center>\n\t\t\t\t\t           <TD bgcolor=#A1B3BD><B>Tipo Cliente</B></TD>\n\t\t\t\t\t           <TD bgcolor=#A1B3BD><B>Dias Empr&eacute;stimo</B></TD>\n\t\t\t\t\t       </TR>";
         $cont = 0;
         foreach ($lst_cliente_tp_exemplar_tp as $valor) {
             if ($cont % 2 == 0) {
                 $color = " bgcolor=#E4E9ED ";
             } else {
                 $color = " bgcolor=#FFFFFF ";
             }
             $obj_cliente_tipo = new clsPmieducarClienteTipo($valor["ref_cod_cliente_tipo"]);
             $det_cliente_tipo = $obj_cliente_tipo->detalhe();
             $nm_tipo = $det_cliente_tipo["nm_tipo"];
             $tabela .= "<TR>\n\t\t\t\t\t\t\t    <TD {$color} align=left>{$nm_tipo}</TD>\n\t\t\t\t\t\t\t    <TD {$color} align=left>{$valor["dias_emprestimo"]}</TD>\n\t\t\t\t\t\t\t</TR>";
             $cont++;
         }
         $tabela .= "</TABLE>";
     }
     if ($tabela) {
         $this->addDetalhe(array("Tipo Cliente", "{$tabela}"));
     }
     $obj_permissoes = new clsPermissoes();
     if ($obj_permissoes->permissao_cadastra(597, $this->pessoa_logada, 11)) {
         $this->url_novo = "educar_exemplar_tipo_cad.php";
         $this->url_editar = "educar_exemplar_tipo_cad.php?cod_exemplar_tipo={$registro["cod_exemplar_tipo"]}";
     }
     $this->url_cancelar = "educar_exemplar_tipo_lst.php";
     $this->largura = "100%";
     $localizacao = new LocalizacaoSistema();
     $localizacao->entradaCaminhos(array($_SERVER['SERVER_NAME'] . "/intranet" => "In&iacute;cio", "educar_biblioteca_index.php" => "i-Educar - Biblioteca", "" => "Detalhe do tipo de exemplares"));
     $this->enviaLocalizacao($localizacao->montar());
 }
 function Gerar()
 {
     // primary keys
     $this->campoOculto("cod_emprestimo", $this->cod_emprestimo);
     $this->data_retirada = dataFromPgToBr($this->data_retirada, "Y-m-d");
     $obj_exemplar = new clsPmieducarExemplar($this->ref_cod_exemplar);
     $det_exemplar = $obj_exemplar->detalhe();
     $cod_acervo = $det_exemplar["ref_cod_acervo"];
     $obj_acervo = new clsPmieducarAcervo($cod_acervo);
     $det_acervo = $obj_acervo->detalhe();
     // tipo de exemplar
     $cod_exemplar_tipo = $det_acervo["ref_cod_exemplar_tipo"];
     $titulo_obra = $det_acervo["titulo"];
     $this->ref_cod_biblioteca = $det_acervo["ref_cod_biblioteca"];
     $this->campoOculto("ref_cod_biblioteca", $this->ref_cod_biblioteca);
     $obj_biblioteca = new clsPmieducarBiblioteca($this->ref_cod_biblioteca);
     $det_biblioteca = $obj_biblioteca->detalhe();
     // valor da multa da biblioteca por dia
     $valor_multa_biblioteca = $det_biblioteca["valor_multa"];
     $obj_cliente_tipo_cliente = new clsPmieducarClienteTipoCliente();
     $lst_cliente_tipo_cliente = $obj_cliente_tipo_cliente->lista(null, $this->ref_cod_cliente, null, null, null, null, null, null, $this->ref_cod_biblioteca);
     if (is_array($lst_cliente_tipo_cliente) && count($lst_cliente_tipo_cliente)) {
         $det_cliente_tipo_cliente = array_shift($lst_cliente_tipo_cliente);
         // tipo do cliente
         $cod_cliente_tipo = $det_cliente_tipo_cliente["ref_cod_cliente_tipo"];
         $obj_cliente_tipo_exemplar_tipo = new clsPmieducarClienteTipoExemplarTipo($cod_cliente_tipo, $cod_exemplar_tipo);
         $det_cliente_tipo_exemplar_tipo = $obj_cliente_tipo_exemplar_tipo->detalhe();
         // qtde de dias disponiveis para emprestimo
         $dias_emprestimo = $det_cliente_tipo_exemplar_tipo["dias_emprestimo"];
     }
     $data_entrega = date("Y-m-d", strtotime("{$this->data_retirada} +" . $dias_emprestimo . " days"));
     //---------------------DIAS FUNCIONAMENTO----------------------//
     $obj_biblioteca_dia = new clsPmieducarBibliotecaDia();
     $lst_biblioteca_dia = $obj_biblioteca_dia->lista($this->ref_cod_biblioteca);
     if (is_array($lst_biblioteca_dia) && count($lst_biblioteca_dia)) {
         foreach ($lst_biblioteca_dia as $dia_semana) {
             // dias de funcionamento da biblioteca
             $biblioteca_dias_semana[] = $dia_semana["dia"];
         }
     }
     // salva somente os dias que n se repetem ( dias de n funcionamento)
     $biblioteca_dias_folga = array_diff($this->dias_da_semana, $biblioteca_dias_semana);
     // inverte as relacoes entre chaves e valores ( de $variavel["Sun"] => 1, para $variavel[1] => "Sun")
     $biblioteca_dias_folga = array_flip($biblioteca_dias_folga);
     //---------------------DIAS FERIADO----------------------//
     $obj_biblioteca_feriado = new clsPmieducarBibliotecaFeriados();
     $lst_biblioteca_feriado = $obj_biblioteca_feriado->lista(null, $this->ref_cod_biblioteca);
     if (is_array($lst_biblioteca_feriado) && count($lst_biblioteca_feriado)) {
         foreach ($lst_biblioteca_feriado as $dia_feriado) {
             // dias de feriado da biblioteca
             $biblioteca_dias_feriado[] = dataFromPgToBr($dia_feriado["data_feriado"], "D Y-m-d");
         }
     }
     // devido a comparacao das datas, é necessario mudar o formato da data
     $data_entrega = dataFromPgToBr($data_entrega, "D Y-m-d");
     if (!is_array($biblioteca_dias_folga)) {
         $biblioteca_dias_folga = array(null);
     }
     if (!is_array($biblioteca_dias_feriado)) {
         $biblioteca_dias_feriado = array(null);
     }
     // verifica se a data cai em algum dia que a biblioteca n funciona
     while (in_array(substr($data_entrega, 0, 3), $biblioteca_dias_folga) || in_array($data_entrega, $biblioteca_dias_feriado)) {
         $data_entrega = date("D Y-m-d ", strtotime("{$data_entrega} +1 day"));
         $data_entrega = dataFromPgToBr($data_entrega, "D Y-m-d");
     }
     $data_entrega = dataFromPgToBr($data_entrega, "Y-m-d");
     // verifica se houve atraso na devolucao do exemplar
     if ($data_entrega < date('Y-m-d')) {
         $dias_atraso = (int) ((time() - strtotime($data_entrega)) / 86400);
         $dias_atraso = $dias_atraso > 0 ? $dias_atraso : 0;
         $valor_divida = $dias_atraso * $valor_multa_biblioteca;
         $valor_divida = number_format($valor_divida, 2, ",", ".");
         $data_entrega = dataFromPgToBr($data_entrega, "d/m/Y");
     }
     // foreign keys
     $obj_cliente = new clsPmieducarCliente($this->ref_cod_cliente);
     $det_cliente = $obj_cliente->detalhe();
     $ref_idpes = $det_cliente["ref_idpes"];
     $obj_pessoa = new clsPessoa_($ref_idpes);
     $det_pessoa = $obj_pessoa->detalhe();
     $nm_pessoa = $det_pessoa["nome"];
     $this->campoTextoInv("nm_pessoa", "Cliente", $nm_pessoa, 30, 255);
     $ref_cod_exemplar_ = $this->ref_cod_exemplar;
     $this->campoTextoInv("ref_cod_exemplar_", "Tombo", $ref_cod_exemplar_, 15, 50);
     $this->campoOculto("ref_cod_exemplar", $this->ref_cod_exemplar);
     $this->campoTextoInv("titulo_obra", "Obra", $titulo_obra, 30, 255);
     @session_start();
     $reload = $_SESSION['reload'];
     @session_write_close();
     if ($valor_divida && !$reload) {
         $this->valor_multa = $valor_divida;
         $this->campoMonetario("valor_divida", "Valor Multa", $valor_divida, 8, 8, false, '', '', '', true);
         $this->campoOculto("valor_multa", $this->valor_multa);
         $reload = 1;
         @session_start();
         $_SESSION['reload'] = $reload;
         @session_write_close();
         echo "<script>\n\t\t\t\tif(!confirm('Atraso na devolução do exemplar ({$dias_atraso} dias)! \\n Data prevista para a entrega: {$data_entrega} \\n Valor total da multa: R\${$valor_divida} \\n Deseja adicionar a multa?'))\n\t\t\t\t\twindow.location = 'educar_exemplar_devolucao_cad.php?cod_emprestimo={$this->cod_emprestimo}';\n\t\t\t</script>";
     } elseif ($valor_divida && $reload) {
         echo "<script> alert('Valor da multa ignorado!'); </script>";
         $valor_divida = '0,00';
         $this->campoMonetario("valor_divida", "Valor Multa", $valor_divida, 8, 8, false, '', '', '', true);
         $this->campoOculto("valor_multa", $this->valor_multa);
     }
 }
 function Editar()
 {
     @session_start();
     $this->pessoa_logada = $_SESSION['id_pessoa'];
     @session_write_close();
     $obj_permissoes = new clsPermissoes();
     $obj_permissoes->permissao_cadastra(597, $this->pessoa_logada, 11, "educar_exemplar_tipo_lst.php");
     $array_tipos = array();
     foreach ($_POST as $key => $cliente_tipo) {
         if (substr($key, 0, 5) == "tipo_") {
             $array_tipos[substr($key, 5)] = $cliente_tipo;
         }
     }
     $obj = new clsPmieducarExemplarTipo($this->cod_exemplar_tipo, $this->ref_cod_biblioteca, $this->pessoa_logada, null, $this->nm_tipo, $this->descricao, null, null, 1);
     $editou = $obj->edita();
     if ($editou) {
         //-----------------------EDITA CLIENTE TIPO------------------------//
         if ($array_tipos) {
             foreach ($array_tipos as $cliente_tipo => $dias_emprestimo) {
                 $obj = new clsPmieducarClienteTipoExemplarTipo($cliente_tipo, $this->cod_exemplar_tipo, $dias_emprestimo);
                 $editou2 = $obj->edita();
                 if (!$editou2) {
                     $this->mensagem = "Edi&ccedil;&atilde;o n&atilde;o realizada.<br>";
                     echo "<!--\nErro ao editar clsPmieducarClienteTipoExemplarTipo\nvalores obrigat&oacute;rios\nis_numeric( {$this->cod_exemplar_tipo} ) && is_numeric( {$this->pessoa_logada} )\n-->";
                     return false;
                 }
             }
         }
         //-----------------------FIM EDITA CLIENTE TIPO------------------------//
         $this->mensagem .= "Edi&ccedil;&atilde;o efetuada com sucesso.<br>";
         header("Location: educar_exemplar_tipo_lst.php");
         die;
         return true;
     }
     $this->mensagem = "Edi&ccedil;&atilde;o n&atilde;o realizada.<br>";
     echo "<!--\nErro ao editar clsPmieducarExemplarTipo\nvalores obrigat&oacute;rios\nif( is_numeric( {$this->cod_exemplar_tipo} ) && is_numeric( {$this->ref_usuario_exc} ) )\n-->";
     return false;
 }