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