From cbd9e9aa4862465dcd5baef049bc824196a0638a Mon Sep 17 00:00:00 2001 From: Lucas Schmoeller da Silva Date: Wed, 18 Mar 2015 09:12:09 -0300 Subject: [PATCH] Alterado processo de reservas --- ieducar/intranet/educar_reservas_lst.php | 37 ++++++++++++++++++++++++++----------- ieducar/intranet/include/pmieducar/clsPmieducarReservas.inc.php | 17 +++++++++++------ ieducar/modules/Biblioteca/Views/EmprestimoApiController.php | 41 ++++++++++++++++++++++++++++++++++++++++- 3 files changed, 77 insertions(+), 18 deletions(-) diff --git a/ieducar/intranet/educar_reservas_lst.php b/ieducar/intranet/educar_reservas_lst.php index 03e9a64..b3da53d 100644 --- a/ieducar/intranet/educar_reservas_lst.php +++ b/ieducar/intranet/educar_reservas_lst.php @@ -29,6 +29,7 @@ require_once ("include/clsListagem.inc.php"); require_once ("include/clsBanco.inc.php"); require_once( "include/pmieducar/geral.inc.php" ); require_once ("include/localizacaoSistema.php"); +require_once 'Portabilis/Date/Utils.php'; class clsIndexBase extends clsBase { @@ -87,6 +88,8 @@ class indice extends clsListagem var $ref_cod_escola; var $cod_biblioteca; + var $tipo_reserva; + function Gerar() { @session_start(); @@ -105,7 +108,8 @@ class indice extends clsListagem $lista_busca = array( "Cliente", "Obra", - "Data Reserva" + "Data Reserva", + 'Data retirada' ); // Filtros de Foreign Keys @@ -126,7 +130,15 @@ class indice extends clsListagem $this->campoOculto("ref_cod_exemplar", $this->ref_cod_exemplar); $this->campoOculto("ref_cod_acervo", $this->ref_cod_acervo); - $this->campoData( "data_reserva", "Data Reserva", $this->data_reserva, false ); + // Filtro verificando se ouve retirada + $resources = array( 1 => 'Todas', + 2 => 'Sem retirada', + 3 => 'Com retirada'); + + $options = array('label' => 'Tipo de reserva', 'resources' => $resources, 'value' => $this->tipo_reserva); + $this->inputsHelper()->select('tipo_reserva', $options); + + $this->campoData( "data_reserva", "Data reserva", $this->data_reserva, false ); if ($this->ref_cod_biblioteca) { @@ -162,7 +174,8 @@ class indice extends clsListagem 1, $this->ref_cod_biblioteca, $this->ref_cod_instituicao, - $this->ref_cod_escola + $this->ref_cod_escola, + ($this->tipo_reserva == 1 || is_null($this->tipo_reserva) ? null : ($this->tipo_reserva == 2 ? true : false)) ); $total = $obj_reservas->_total; @@ -175,6 +188,7 @@ class indice extends clsListagem // muda os campos data $registro["data_reserva_time"] = strtotime( substr( $registro["data_reserva"], 0, 16 ) ); $registro["data_reserva_br"] = date( "d/m/Y", $registro["data_reserva_time"] ); + $registro["data_retirada_br"] = ($registro["data_retirada"] == null ? '-' : Portabilis_Date_Utils::PgSqltoBr(substr($registro["data_retirada"],0,10) )); // pega detalhes de foreign_keys if( class_exists( "clsPmieducarExemplar" ) ) @@ -227,20 +241,21 @@ class indice extends clsListagem } $lista_busca = array( - "{$registro["ref_cod_cliente"]}", - "{$registro["ref_cod_exemplar"]}", - "{$registro["data_reserva_br"]}" + "{$registro["ref_cod_cliente"]}", + "{$registro["ref_cod_exemplar"]}", + "{$registro["data_reserva_br"]}", + "{$registro["data_retirada_br"] }" ); if ($qtd_bibliotecas > 1 && ($nivel_usuario == 4 || $nivel_usuario == 8)) - $lista_busca[] = "{$registro["ref_cod_biblioteca"]}"; + $lista_busca[] = "{$registro["ref_cod_biblioteca"]}"; else if ($nivel_usuario == 1 || $nivel_usuario == 2 || $nivel_usuario == 4) - $lista_busca[] = "{$registro["ref_cod_biblioteca"]}"; + $lista_busca[] = "{$registro["ref_cod_biblioteca"]}"; if ($nivel_usuario == 1 || $nivel_usuario == 2) - $lista_busca[] = "{$registro["ref_cod_escola"]}"; + $lista_busca[] = "{$registro["ref_cod_escola"]}"; if ($nivel_usuario == 1) - $lista_busca[] = "{$registro["ref_cod_instituicao"]}"; + $lista_busca[] = "{$registro["ref_cod_instituicao"]}"; $this->addLinhas($lista_busca); } @@ -249,7 +264,7 @@ class indice extends clsListagem $obj_permissoes = new clsPermissoes(); if( $obj_permissoes->permissao_cadastra( 609, $this->pessoa_logada, 11 ) ) { - $this->acao = "go(\"educar_reservas_login_cad.php\")"; + $this->acao = "go(\"/module/Biblioteca/Reserva\")"; $this->nome_acao = "Novo"; } diff --git a/ieducar/intranet/include/pmieducar/clsPmieducarReservas.inc.php b/ieducar/intranet/include/pmieducar/clsPmieducarReservas.inc.php index 635885d..94792a5 100644 --- a/ieducar/intranet/include/pmieducar/clsPmieducarReservas.inc.php +++ b/ieducar/intranet/include/pmieducar/clsPmieducarReservas.inc.php @@ -390,7 +390,7 @@ class clsPmieducarReservas * * @return array */ - function lista( $int_cod_reserva = null, $int_ref_usuario_libera = null, $int_ref_usuario_cad = null, $int_ref_cod_cliente = null, $date_data_reserva_ini = null, $date_data_reserva_fim = null, $date_data_prevista_disponivel_ini = null, $date_data_prevista_disponivel_fim = null, $date_data_retirada_ini = null, $date_data_retirada_fim = null, $int_ref_cod_exemplar = null, $int_ativo = null, $int_ref_cod_biblioteca = null, $int_ref_cod_instituicao = null, $int_ref_cod_escola = null, $data_retirada_null = false ) + function lista( $int_cod_reserva = null, $int_ref_usuario_libera = null, $int_ref_usuario_cad = null, $int_ref_cod_cliente = null, $date_data_reserva_ini = null, $date_data_reserva_fim = null, $date_data_prevista_disponivel_ini = null, $date_data_prevista_disponivel_fim = null, $date_data_retirada_ini = null, $date_data_retirada_fim = null, $int_ref_cod_exemplar = null, $int_ativo = null, $int_ref_cod_biblioteca = null, $int_ref_cod_instituicao = null, $int_ref_cod_escola = null, $data_retirada_null = null ) { $sql = "SELECT {$this->_campos_lista}, a.ref_cod_biblioteca, b.ref_cod_instituicao, b.ref_cod_escola FROM {$this->_tabela} r, {$this->_schema}exemplar e, {$this->_schema}acervo a, {$this->_schema}biblioteca b"; @@ -478,11 +478,16 @@ class clsPmieducarReservas $whereAnd = " AND "; } - if($data_retirada_null) - { - $filtros .= "{$whereAnd} r.data_retirada is null"; - $whereAnd = " AND "; - } + if(!is_null($data_retirada_null)){ + if($data_retirada_null) + { + $filtros .= "{$whereAnd} r.data_retirada is null"; + $whereAnd = " AND "; + }else{ + $filtros .= "{$whereAnd} r.data_retirada is not null"; + $whereAnd = " AND "; + } + } $db = new clsBanco(); $countCampos = count( explode( ",", $this->_campos_lista ) ); diff --git a/ieducar/modules/Biblioteca/Views/EmprestimoApiController.php b/ieducar/modules/Biblioteca/Views/EmprestimoApiController.php index 024f487..ff53780 100644 --- a/ieducar/modules/Biblioteca/Views/EmprestimoApiController.php +++ b/ieducar/modules/Biblioteca/Views/EmprestimoApiController.php @@ -229,7 +229,7 @@ class EmprestimoApiController extends ApiCoreController null, null, null, - $exemplar['cod_exemplar'], + $exemplar['id'], 1, $this->getRequest()->biblioteca_id, $this->getRequest()->instituicao_id, @@ -364,9 +364,48 @@ class EmprestimoApiController extends ApiCoreController if (is_null($exemplar)) $exemplar = $this->loadExemplar(); + if ($exemplar['situacao']['flag'] == 'reservado') + $exemplar['situacao']['flag'] = $this->validateReservaOfExemplar($exemplar); + return $exemplar['situacao']; } + // Verifica se há reservas para o exemplar + // Efetua retirada da reserva caso seja para o cliente em questão + protected function validateReservaOfExemplar($exemplar = null){ + if (is_null($exemplar)) + $exemplar = $this->loadExemplar(); + + $reservas = $this->loadReservasForExemplar($exemplar); + $cont = 0; + $clientePossuiReserva = false; + $codReserva = 0; + if (is_array($reservas) && count($reservas)){ + foreach ($reservas as $registro) { + $cont; + if ($registro['cliente_id'] == $this->getRequest()->cliente_id){ + $clientePossuiReserva = true; + $codReserva = $registro['id']; + break; + } + } + } + if ($clientePossuiReserva){ + if ($cont==1){ + $reservas = new clsPmieducarReservas($codReserva); + $reservas->data_retirada = date('Y-m-d H:i:s'); + $reservas->edita(); + }else{ + + $this->messenger->append("Outros clientes já haviam reservado o exemplar anteriormente.".$cont, 'success'); + } + }else if($cont>0){ + $this->messenger->append("Outros clientes já haviam reservado o exemplar.", 'success'); + } + + return 'disponivel'; + } + protected function getPendenciasForExemplar($exemplar) { if (! isset($exemplar['situacao'])) -- libgit2 0.21.2