Commit 80d95c0c6d9880a07029cc19c34a436fb8e8977b
1 parent
7777dc5e
Exists in
master
r28@erik: eriksen | 2009-04-24 19:57:24 -0300
#17 by Eriksen: Corrigido bug que não listava os clientes de uma bibliteca enquanto não houvesse uma entrada na tabela de suspensão. Foi criado um método auxiliar na classe clsBanco para fazer a contagem de registros de uma tabela, para facilitar a correção do bug.
Showing
2 changed files
with
352 additions
and
312 deletions
Show diff stats
ieducar/intranet/include/clsBanco.inc.php
| 1 | <?php | 1 | <?php |
| 2 | -/* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * | ||
| 3 | -* * | ||
| 4 | -* @author Prefeitura Municipal de Itajaí * | ||
| 5 | -* @updated 29/03/2007 * | ||
| 6 | -* Pacote: i-PLB Software Público Livre e Brasileiro * | ||
| 7 | -* * | ||
| 8 | -* Copyright (C) 2006 PMI - Prefeitura Municipal de Itajaí * | ||
| 9 | -* ctima@itajai.sc.gov.br * | ||
| 10 | -* * | ||
| 11 | -* Este programa é software livre, você pode redistribuí-lo e/ou * | ||
| 12 | -* modificá-lo sob os termos da Licença Pública Geral GNU, conforme * | ||
| 13 | -* publicada pela Free Software Foundation, tanto a versão 2 da * | ||
| 14 | -* Licença como (a seu critério) qualquer versão mais nova. * | ||
| 15 | -* * | ||
| 16 | -* Este programa é distribuído na expectativa de ser útil, mas SEM * | ||
| 17 | -* QUALQUER GARANTIA. Sem mesmo a garantia implícita de COMERCIALI- * | ||
| 18 | -* ZAÇÃO ou de ADEQUAÇÃO A QUALQUER PROPÓSITO EM PARTICULAR. Con- * | ||
| 19 | -* sulte a Licença Pública Geral GNU para obter mais detalhes. * | ||
| 20 | -* * | ||
| 21 | -* Você deve ter recebido uma cópia da Licença Pública Geral GNU * | ||
| 22 | -* junto com este programa. Se não, escreva para a Free Software * | ||
| 23 | -* Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA * | ||
| 24 | -* 02111-1307, USA. * | ||
| 25 | -* * | ||
| 26 | -* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * */ | ||
| 27 | -if( ! class_exists( "clsBancoSql_" ) ) | ||
| 28 | -{ | ||
| 29 | - require_once ( "include/clsBancoPgSql.inc.php" ); | ||
| 30 | -} | 2 | +/** |
| 3 | + * | ||
| 4 | + * @author Prefeitura Municipal de Itajaí | ||
| 5 | + * @version SVN: $Id$ | ||
| 6 | + * | ||
| 7 | + * Pacote: i-PLB Software Público Livre e Brasileiro | ||
| 8 | + * | ||
| 9 | + * Copyright (C) 2006 PMI - Prefeitura Municipal de Itajaí | ||
| 10 | + * ctima@itajai.sc.gov.br | ||
| 11 | + * | ||
| 12 | + * Este programa é software livre, você pode redistribuí-lo e/ou | ||
| 13 | + * modificá-lo sob os termos da Licença Pública Geral GNU, conforme | ||
| 14 | + * publicada pela Free Software Foundation, tanto a versão 2 da | ||
| 15 | + * Licença como (a seu critério) qualquer versão mais nova. | ||
| 16 | + * | ||
| 17 | + * Este programa é distribuído na expectativa de ser útil, mas SEM | ||
| 18 | + * QUALQUER GARANTIA. Sem mesmo a garantia implícita de COMERCIALI- | ||
| 19 | + * ZAÇÃO ou de ADEQUAÇÃO A QUALQUER PROPÓSITO EM PARTICULAR. Con- | ||
| 20 | + * sulte a Licença Pública Geral GNU para obter mais detalhes. | ||
| 21 | + * | ||
| 22 | + * Você deve ter recebido uma cópia da Licença Pública Geral GNU | ||
| 23 | + * junto com este programa. Se não, escreva para a Free Software | ||
| 24 | + * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA | ||
| 25 | + * 02111-1307, USA. | ||
| 26 | + * | ||
| 27 | + */ | ||
| 31 | 28 | ||
| 32 | -class clsBanco extends clsBancoSQL_ | ||
| 33 | -{ | ||
| 34 | - | ||
| 35 | - /*protected*/var $strHost = "localhost"; // Nome ou ip do servidor de dados | ||
| 36 | - /*protected*/var $strBanco = "ieducardb"; // Nome do Banco de Dados | ||
| 37 | - /*protected*/var $strUsuario = "ieducaruser"; // Usuário devidamente autorizado a acessar o Banco | ||
| 38 | - /*protected*/var $strSenha = "ieducar"; // Senha do Usuário do Banco | ||
| 39 | - | ||
| 40 | - /*protected*/var $bLink_ID = 0; // Identificador de Conexão | ||
| 41 | - /*protected*/var $bConsulta_ID = 0; // Identificador de Resultado de Consulta | ||
| 42 | - /*protected*/var $arrayStrRegistro = array(); // Tupla resultante de uma consulta | ||
| 43 | - /*protected*/var $iLinha = 0; // Ponteiro interno para a Tupla atual da consulta | ||
| 44 | - | ||
| 45 | - /*protected*/var $bErro_no = 0; // Se ocorreu erro na consulta, retorna Falso | ||
| 46 | - /*protected*/var $strErro = ""; // Frase de descrição do Erro Retornado | ||
| 47 | - /*protected*/var $bDepurar = false; // Ativa ou desativa funçoes de depuração | ||
| 48 | - | ||
| 49 | - /*protected*/var $bAuto_Limpa = false; //" 1" para limpar o resultado assim que chegar ao último registro | ||
| 50 | - | ||
| 51 | - /*private*/var $strStringSQL = ""; | ||
| 52 | - | ||
| 53 | - /*protected*/var $strType = ""; | ||
| 54 | - /*protected*/var $arrayStrFields = array(); | ||
| 55 | - /*protected*/var $arrayStrFrom = array(); | ||
| 56 | - /*protected*/var $arrayStrWhere = array(); | ||
| 57 | - /*protected*/var $arrayStrOrderBy = array(); | ||
| 58 | - /*protected*/var $arrayStrGroupBy = array(); | ||
| 59 | - /*protected*/var $iLimitInicio; | ||
| 60 | - /*protected*/var $iLimitQtd; | ||
| 61 | - /*protected*/var $arrayStrArquivo = ""; | ||
| 62 | - | ||
| 63 | - function clsBanco( $strDataBase = false ) | ||
| 64 | - { | ||
| 65 | - if( $strDataBase ) | ||
| 66 | - { | ||
| 67 | - //$this->strBanco = $strDataBase; | ||
| 68 | - } | ||
| 69 | - } | 29 | +if (!class_exists('clsBancoSql_')) { |
| 30 | + require_once 'include/clsBancoPgSql.inc.php'; | ||
| 70 | } | 31 | } |
| 71 | -?> | 32 | + |
| 33 | +class clsBanco extends clsBancoSQL_ { | ||
| 34 | + | ||
| 35 | + public $strHost = "localhost"; // Nome ou endereço IP do servidor do banco de dados | ||
| 36 | + public $strBanco = "ieducardb"; // Nome do banco de dados | ||
| 37 | + public $strUsuario = "ieducaruser"; // Usuário devidamente autorizado a acessar o banco | ||
| 38 | + public $strSenha = "ieducar"; // Senha do usuário do banco | ||
| 39 | + | ||
| 40 | + public $bLink_ID = 0; // Identificador da conexão | ||
| 41 | + public $bConsulta_ID = 0; // Identificador do resultado da consulta | ||
| 42 | + public $arrayStrRegistro = array(); // Tupla resultante de uma consulta | ||
| 43 | + public $iLinha = 0; // Ponteiro interno para a tupla atual da consulta | ||
| 44 | + | ||
| 45 | + public $bErro_no = 0; // Se ocorreu erro na consulta, retorna FALSE | ||
| 46 | + public $strErro = ""; // Frase de descrição do erro retornado | ||
| 47 | + public $bDepurar = FALSE; // Ativa ou desativa funções de depuração | ||
| 48 | + | ||
| 49 | + public $bAuto_Limpa = FALSE; // '1' para limpar o resultado assim que chegar ao último registro | ||
| 50 | + | ||
| 51 | + public $strStringSQL = ""; | ||
| 52 | + | ||
| 53 | + var $strType = ""; | ||
| 54 | + var $arrayStrFields = array(); | ||
| 55 | + var $arrayStrFrom = array(); | ||
| 56 | + var $arrayStrWhere = array(); | ||
| 57 | + var $arrayStrOrderBy = array(); | ||
| 58 | + var $arrayStrGroupBy = array(); | ||
| 59 | + var $iLimitInicio; | ||
| 60 | + var $iLimitQtd; | ||
| 61 | + var $arrayStrArquivo = ""; | ||
| 62 | + | ||
| 63 | + | ||
| 64 | + | ||
| 65 | + /** | ||
| 66 | + * Construtor (PHP 4). | ||
| 67 | + */ | ||
| 68 | + public function clsBanco($strDataBase = FALSE) {} | ||
| 69 | + | ||
| 70 | + | ||
| 71 | + | ||
| 72 | + /** | ||
| 73 | + * Retorna a quantidade de registros de uma tabela baseado no objeto que a | ||
| 74 | + * abstrai. Este deve ter um atributo público Object->_tabela. | ||
| 75 | + * | ||
| 76 | + * @param object Objeto que abstrai a tabela | ||
| 77 | + * @param string Nome da coluna para cálculo COUNT() | ||
| 78 | + * @return int Quantidade de registros da tabela | ||
| 79 | + */ | ||
| 80 | + public function doCountFromObj($obj, $column = '*') { | ||
| 81 | + if ($obj->_tabela == NULL) { | ||
| 82 | + return FALSE; | ||
| 83 | + } | ||
| 84 | + | ||
| 85 | + $sql = sprintf('SELECT COUNT(%s) FROM %s', $column, $obj->_tabela); | ||
| 86 | + $this->Consulta($sql); | ||
| 87 | + | ||
| 88 | + return (int)$this->UnicoCampo($sql); | ||
| 89 | + } | ||
| 90 | + | ||
| 91 | +} | ||
| 72 | \ No newline at end of file | 92 | \ No newline at end of file |
ieducar/intranet/include/pmieducar/clsPmieducarCliente.inc.php
| 1 | <?php | 1 | <?php |
| 2 | /** | 2 | /** |
| 3 | * | 3 | * |
| 4 | - * @author Prefeitura Municipal de Itajaí | ||
| 5 | - * @updated 29/03/2007 | ||
| 6 | - * Pacote: i-PLB Software Público Livre e Brasileiro | 4 | + * @author Prefeitura Municipal de Itajaí |
| 5 | + * @version SVN: $Id$ | ||
| 7 | * | 6 | * |
| 8 | - * Copyright (C) 2006 PMI - Prefeitura Municipal de Itajaí | ||
| 9 | - * ctima@itajai.sc.gov.br | 7 | + * Pacote: i-PLB Software Público Livre e Brasileiro |
| 10 | * | 8 | * |
| 11 | - * Este programa é software livre, você pode redistribuí-lo e/ou | ||
| 12 | - * modificá-lo sob os termos da Licença Pública Geral GNU, conforme | ||
| 13 | - * publicada pela Free Software Foundation, tanto a versão 2 da | ||
| 14 | - * Licença como (a seu critério) qualquer versão mais nova. | 9 | + * Copyright (C) 2006 PMI - Prefeitura Municipal de Itajaí |
| 10 | + * ctima@itajai.sc.gov.br | ||
| 15 | * | 11 | * |
| 16 | - * Este programa é distribuído na expectativa de ser útil, mas SEM | ||
| 17 | - * QUALQUER GARANTIA. Sem mesmo a garantia implícita de COMERCIALI- | ||
| 18 | - * ZAÇÃO ou de ADEQUAÇÃO A QUALQUER PROPÓSITO EM PARTICULAR. Con- | ||
| 19 | - * sulte a Licença Pública Geral GNU para obter mais detalhes. | 12 | + * Este programa é software livre, você pode redistribuí-lo e/ou |
| 13 | + * modificá-lo sob os termos da Licença Pública Geral GNU, conforme | ||
| 14 | + * publicada pela Free Software Foundation, tanto a versão 2 da | ||
| 15 | + * Licença como (a seu critério) qualquer versão mais nova. | ||
| 20 | * | 16 | * |
| 21 | - * Você deve ter recebido uma cópia da Licença Pública Geral GNU | ||
| 22 | - * junto com este programa. Se não, escreva para a Free Software | ||
| 23 | - * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA | ||
| 24 | - * 02111-1307, USA. | 17 | + * Este programa é distribuído na expectativa de ser útil, mas SEM |
| 18 | + * QUALQUER GARANTIA. Sem mesmo a garantia implícita de COMERCIALI- | ||
| 19 | + * ZAÇÃO ou de ADEQUAÇÃO A QUALQUER PROPÓSITO EM PARTICULAR. Con- | ||
| 20 | + * sulte a Licença Pública Geral GNU para obter mais detalhes. | ||
| 21 | + * | ||
| 22 | + * Você deve ter recebido uma cópia da Licença Pública Geral GNU | ||
| 23 | + * junto com este programa. Se não, escreva para a Free Software | ||
| 24 | + * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA | ||
| 25 | + * 02111-1307, USA. | ||
| 25 | * | 26 | * |
| 26 | */ | 27 | */ |
| 27 | 28 | ||
| 28 | -/* | ||
| 29 | - * Criado em 17/07/2006 09:18 pelo gerador automatico de classes | ||
| 30 | - */ | ||
| 31 | - | ||
| 32 | -require_once( "include/pmieducar/geral.inc.php" ); | 29 | +require_once 'include/pmieducar/geral.inc.php'; |
| 33 | 30 | ||
| 34 | class clsPmieducarCliente | 31 | class clsPmieducarCliente |
| 35 | { | 32 | { |
| @@ -102,13 +99,16 @@ class clsPmieducarCliente | @@ -102,13 +99,16 @@ class clsPmieducarCliente | ||
| 102 | var $_campo_order_by; | 99 | var $_campo_order_by; |
| 103 | 100 | ||
| 104 | 101 | ||
| 102 | + | ||
| 105 | /** | 103 | /** |
| 106 | * Construtor (PHP 4) | 104 | * Construtor (PHP 4) |
| 107 | * | 105 | * |
| 108 | * @return object | 106 | * @return object |
| 109 | */ | 107 | */ |
| 110 | - function clsPmieducarCliente( $cod_cliente = null, $ref_usuario_exc = null, $ref_usuario_cad = null, $ref_idpes = null, $login = null, $senha = null, $data_cadastro = null, $data_exclusao = null, $ativo = null ) | ||
| 111 | - { | 108 | + function clsPmieducarCliente($cod_cliente = NULL, $ref_usuario_exc = NULL, |
| 109 | + $ref_usuario_cad = NULL, $ref_idpes = NULL, $login = NULL, $senha = NULL, $data_cadastro = NULL, | ||
| 110 | + $data_exclusao = NULL, $ativo = NULL) { | ||
| 111 | + | ||
| 112 | $db = new clsBanco(); | 112 | $db = new clsBanco(); |
| 113 | $this->_schema = "pmieducar."; | 113 | $this->_schema = "pmieducar."; |
| 114 | $this->_tabela = "{$this->_schema}cliente"; | 114 | $this->_tabela = "{$this->_schema}cliente"; |
| @@ -479,228 +479,249 @@ class clsPmieducarCliente | @@ -479,228 +479,249 @@ class clsPmieducarCliente | ||
| 479 | return false; | 479 | return false; |
| 480 | } | 480 | } |
| 481 | 481 | ||
| 482 | - /** | ||
| 483 | - * Retorna uma lista filtrados de acordo com os parametros | ||
| 484 | - * | ||
| 485 | - * @return array | ||
| 486 | - */ | ||
| 487 | - function listaCompleta( $int_cod_cliente = null, $int_ref_usuario_exc = null, $int_ref_usuario_cad = null, $int_ref_idpes = null, $int_login = null, $str_senha = null, $date_data_cadastro_ini = null, $date_data_cadastro_fim = null, $date_data_exclusao_ini = null, $date_data_exclusao_fim = null, $int_ativo = 1, $str_nm_cliente = null, $str_suspenso = null, $int_cod_cliente_tipo = null, $int_cod_escola = null, $int_cod_biblioteca = null, $int_cod_instituicao = null ) | ||
| 488 | - { | ||
| 489 | - $tab_adicional = ''; | ||
| 490 | - $condicao = ''; | ||
| 491 | - $camp_adicional = ''; | ||
| 492 | - | ||
| 493 | - // Se suspenso não for nulo, seleciona clientes suspensos | ||
| 494 | - if (!is_null($str_suspenso)) | ||
| 495 | - { | ||
| 496 | - $camp_adicional .= ", pmieducar.cliente_suspensao cs "; | ||
| 497 | - $condicao .= " AND c.cod_cliente = cs.ref_cod_cliente"; | ||
| 498 | - } | ||
| 499 | - else | ||
| 500 | - { | ||
| 501 | - $camp_adicional .= ", pmieducar.cliente_suspensao cs "; | ||
| 502 | - $condicao .= " AND c.cod_cliente <> cs.ref_cod_cliente"; | ||
| 503 | - } | ||
| 504 | - | ||
| 505 | - $sql1 = "SELECT c.cod_cliente, | ||
| 506 | - c.ref_idpes, | ||
| 507 | - c.ref_usuario_cad, | ||
| 508 | - c.login, | ||
| 509 | - p.nome, | ||
| 510 | - ct.nm_tipo, | ||
| 511 | - ct.cod_cliente_tipo, | ||
| 512 | - b.nm_biblioteca, | ||
| 513 | - b.cod_biblioteca, | ||
| 514 | - e.cod_escola as cod_escola, | ||
| 515 | - i.cod_instituicao, | ||
| 516 | - (SELECT 'S'::text | ||
| 517 | - FROM pmieducar.cliente_suspensao cs | ||
| 518 | - WHERE cs.ref_cod_cliente = c.cod_cliente | ||
| 519 | - AND cs.data_liberacao IS NULL) AS id_suspensao | ||
| 520 | - FROM pmieducar.cliente c, | ||
| 521 | - pmieducar.cliente_tipo_cliente ctc, | ||
| 522 | - pmieducar.cliente_tipo ct, | ||
| 523 | - pmieducar.biblioteca b, | ||
| 524 | - pmieducar.escola e, | ||
| 525 | - pmieducar.instituicao i, | ||
| 526 | - cadastro.pessoa p{$camp_adicional} | ||
| 527 | - WHERE c.cod_cliente = ctc.ref_cod_cliente | ||
| 528 | - AND ct.cod_cliente_tipo = ctc.ref_cod_cliente_tipo | ||
| 529 | - AND b.cod_biblioteca = ct.ref_cod_biblioteca | ||
| 530 | - AND e.cod_escola = b.ref_cod_escola | ||
| 531 | - AND i.cod_instituicao = b.ref_cod_instituicao | ||
| 532 | - AND e.ref_cod_instituicao = i.cod_instituicao{$condicao} | ||
| 533 | - AND p.idpes = c.ref_idpes | ||
| 534 | - AND c.ativo = '{$int_ativo}' | ||
| 535 | - AND ctc.ativo = '{$int_ativo}'"; | ||
| 536 | - | ||
| 537 | - $sql2 = "SELECT c.cod_cliente, | ||
| 538 | - c.ref_idpes, | ||
| 539 | - c.ref_usuario_cad, | ||
| 540 | - c.login, | ||
| 541 | - p.nome, | ||
| 542 | - ct.nm_tipo, | ||
| 543 | - ct.cod_cliente_tipo, | ||
| 544 | - b.nm_biblioteca, | ||
| 545 | - b.cod_biblioteca, | ||
| 546 | - null as cod_escola, | ||
| 547 | - i.cod_instituicao, | ||
| 548 | - (SELECT 'S'::text | ||
| 549 | - FROM pmieducar.cliente_suspensao cs | ||
| 550 | - WHERE cs.ref_cod_cliente = c.cod_cliente | ||
| 551 | - AND cs.data_liberacao IS NULL) AS id_suspensao | ||
| 552 | - FROM pmieducar.cliente c, | ||
| 553 | - pmieducar.cliente_tipo_cliente ctc, | ||
| 554 | - pmieducar.cliente_tipo ct, | ||
| 555 | - pmieducar.biblioteca b, | ||
| 556 | - pmieducar.instituicao i, | ||
| 557 | - cadastro.pessoa p{$camp_adicional} | ||
| 558 | - WHERE c.cod_cliente = ctc.ref_cod_cliente | ||
| 559 | - AND ct.cod_cliente_tipo = ctc.ref_cod_cliente_tipo | ||
| 560 | - AND b.cod_biblioteca = ct.ref_cod_biblioteca | ||
| 561 | - AND i.cod_instituicao = b.ref_cod_instituicao | ||
| 562 | - AND b.ref_cod_escola IS NULL | ||
| 563 | - AND ct.ref_cod_biblioteca = b.cod_biblioteca{$condicao} | ||
| 564 | - AND p.idpes = c.ref_idpes | ||
| 565 | - AND c.ativo = '{$int_ativo}' | ||
| 566 | - AND ctc.ativo = '{$int_ativo}'"; | ||
| 567 | 482 | ||
| 568 | - $filtros = ""; | ||
| 569 | - $whereAnd = " AND "; | ||
| 570 | 483 | ||
| 571 | - if( is_numeric( $int_cod_cliente ) ) | ||
| 572 | - { | ||
| 573 | - $filtros .= "{$whereAnd} c.cod_cliente = '{$int_cod_cliente}'"; | ||
| 574 | - $whereAnd = " AND "; | ||
| 575 | - } | ||
| 576 | - if( is_numeric( $int_ref_usuario_exc ) ) | ||
| 577 | - { | ||
| 578 | - $filtros .= "{$whereAnd} c.ref_usuario_exc = '{$int_ref_usuario_exc}'"; | ||
| 579 | - $whereAnd = " AND "; | ||
| 580 | - } | ||
| 581 | - if( is_numeric( $int_ref_usuario_cad ) ) | ||
| 582 | - { | ||
| 583 | - $filtros .= "{$whereAnd} c.ref_usuario_cad = '{$int_ref_usuario_cad}'"; | ||
| 584 | - $whereAnd = " AND "; | ||
| 585 | - } | ||
| 586 | - if( is_numeric( $int_ref_idpes ) ) | ||
| 587 | - { | ||
| 588 | - $filtros .= "{$whereAnd} c.ref_idpes = '{$int_ref_idpes}'"; | ||
| 589 | - $whereAnd = " AND "; | ||
| 590 | - } | ||
| 591 | - if( is_numeric( $int_login ) ) | ||
| 592 | - { | ||
| 593 | - $filtros .= "{$whereAnd} c.login = '{$int_login}'"; | ||
| 594 | - $whereAnd = " AND "; | ||
| 595 | - } | ||
| 596 | - if( is_string( $str_senha ) ) | ||
| 597 | - { | ||
| 598 | - $filtros .= "{$whereAnd} c.senha = '{$str_senha}'"; | ||
| 599 | - $whereAnd = " AND "; | ||
| 600 | - } | ||
| 601 | - if( is_string( $date_data_cadastro_ini ) ) | ||
| 602 | - { | ||
| 603 | - $filtros .= "{$whereAnd} c.data_cadastro >= '{$date_data_cadastro_ini}'"; | ||
| 604 | - $whereAnd = " AND "; | ||
| 605 | - } | ||
| 606 | - if( is_string( $date_data_cadastro_fim ) ) | ||
| 607 | - { | ||
| 608 | - $filtros .= "{$whereAnd} c.data_cadastro <= '{$date_data_cadastro_fim}'"; | ||
| 609 | - $whereAnd = " AND "; | ||
| 610 | - } | ||
| 611 | - if( is_string( $date_data_exclusao_ini ) ) | ||
| 612 | - { | ||
| 613 | - $filtros .= "{$whereAnd} c.data_exclusao >= '{$date_data_exclusao_ini}'"; | ||
| 614 | - $whereAnd = " AND "; | ||
| 615 | - } | ||
| 616 | - if( is_string( $date_data_exclusao_fim ) ) | ||
| 617 | - { | ||
| 618 | - $filtros .= "{$whereAnd} c.data_exclusao <= '{$date_data_exclusao_fim}'"; | ||
| 619 | - $whereAnd = " AND "; | ||
| 620 | - } | ||
| 621 | - if( is_null( $int_ativo ) || $int_ativo ) | ||
| 622 | - { | ||
| 623 | - $filtros .= "{$whereAnd} c.ativo = '1'"; | ||
| 624 | - $whereAnd = " AND "; | ||
| 625 | - } | ||
| 626 | - else | ||
| 627 | - { | ||
| 628 | - $filtros .= "{$whereAnd} c.ativo = '0'"; | ||
| 629 | - $whereAnd = " AND "; | ||
| 630 | - } | ||
| 631 | - if( is_string( $str_nm_cliente ) ) | ||
| 632 | - { | ||
| 633 | - $filtros .= "{$whereAnd} p.nome LIKE '%{$str_nm_cliente}%'"; | ||
| 634 | - $whereAnd = " AND "; | ||
| 635 | - } | ||
| 636 | - if ( is_numeric( $int_cod_cliente_tipo ) ) | ||
| 637 | - { | ||
| 638 | - $filtros .= "{$whereAnd} ct.cod_cliente_tipo = '{$int_cod_cliente_tipo}'"; | ||
| 639 | - $whereAnd = " AND "; | ||
| 640 | - } | ||
| 641 | - if ( is_array( $int_cod_biblioteca ) ) | ||
| 642 | - { | ||
| 643 | - $array_biblioteca = implode(", ", $int_cod_biblioteca); | ||
| 644 | - $filtros .= "{$whereAnd} b.cod_biblioteca IN ({$array_biblioteca})"; | ||
| 645 | - $whereAnd = " AND "; | ||
| 646 | - } | ||
| 647 | - if ( is_numeric( $int_cod_biblioteca ) ) | ||
| 648 | - { | ||
| 649 | - $filtros .= "{$whereAnd} b.cod_biblioteca = '{$int_cod_biblioteca}'"; | ||
| 650 | - $whereAnd = " AND "; | ||
| 651 | - } | ||
| 652 | - if ( is_numeric( $int_cod_escola ) ) | ||
| 653 | - { | ||
| 654 | - $filtros .= "{$whereAnd} e.cod_escola = '{$int_cod_escola}'"; | ||
| 655 | - $whereAnd = " AND "; | ||
| 656 | - } | ||
| 657 | - if ( is_numeric( $int_cod_instituicao ) ) | ||
| 658 | - { | ||
| 659 | - $filtros .= "{$whereAnd} i.cod_instituicao = '{$int_cod_instituicao}'"; | ||
| 660 | - $whereAnd = " AND "; | ||
| 661 | - } | ||
| 662 | - if( is_string( $str_suspenso ) ) { | ||
| 663 | - $filtros .= "{$whereAnd} cs.data_liberacao IS NULL"; | ||
| 664 | - $whereAnd = " AND "; | ||
| 665 | - } | ||
| 666 | - | ||
| 667 | - $db = new clsBanco(); | ||
| 668 | - $resultado = array(); | ||
| 669 | - | ||
| 670 | - $sql1 .= $filtros; /*. $this->getOrderby() . $this->getLimite();*/ | ||
| 671 | - $sql2 .= $filtros; | ||
| 672 | - | ||
| 673 | - if(is_numeric($int_cod_escola)) | ||
| 674 | - { | ||
| 675 | - $this->_total = $db->CampoUnico( "SELECT count(0) FROM ( {$sql1} ) AS SUBQUERY" ); | ||
| 676 | - } | ||
| 677 | - else | ||
| 678 | - { | ||
| 679 | - $this->_total = $db->CampoUnico( "SELECT count(0) FROM ( ".$sql1." UNION ".$sql2." ) AS SUBQUERY" ); | ||
| 680 | - } | ||
| 681 | - | ||
| 682 | - $sql2 .= $this->getOrderby() . $this->getLimite(); | ||
| 683 | - | ||
| 684 | - if ( is_numeric( $int_cod_escola ) ) | ||
| 685 | - $sql = $sql1; | ||
| 686 | - else | ||
| 687 | - $sql = $sql1." UNION ".$sql2; | ||
| 688 | - | ||
| 689 | - $db->Consulta( $sql ); | 484 | + /** |
| 485 | + * Retorna uma lista filtrada de acordo com os argumentos. | ||
| 486 | + * | ||
| 487 | + * @return Array | ||
| 488 | + */ | ||
| 489 | + public function listaCompleta($int_cod_cliente = NULL, $int_ref_usuario_exc = NULL, | ||
| 490 | + $int_ref_usuario_cad = NULL, $int_ref_idpes = NULL, $int_login = NULL, $str_senha = NULL, | ||
| 491 | + $date_data_cadastro_ini = NULL, $date_data_cadastro_fim = NULL, $date_data_exclusao_ini = NULL, | ||
| 492 | + $date_data_exclusao_fim = NULL, $int_ativo = 1, $str_nm_cliente = NULL, $str_suspenso = NULL, | ||
| 493 | + $int_cod_cliente_tipo = NULL, $int_cod_escola = NULL, $int_cod_biblioteca = NULL, | ||
| 494 | + $int_cod_instituicao = NULL) { | ||
| 495 | + | ||
| 496 | + $tab_adicional = ''; | ||
| 497 | + $condicao = ''; | ||
| 498 | + $camp_adicional = ''; | ||
| 499 | + | ||
| 500 | + // Executa filtragem por clientes suspensos somente quando houver registros na tabela | ||
| 501 | + $clienteSuspenso = new clsPmieducarClienteSuspensao(); | ||
| 502 | + $db = new clsBanco(); | ||
| 503 | + | ||
| 504 | + // Se suspenso não for nulo e existirem cliente suspensos, seleciona-os | ||
| 505 | + // quando ainda estiverem no prazo de suspensão | ||
| 506 | + if (!is_null($str_suspenso) && $db->doCountFromObj($clienteSuspenso) > 0) { | ||
| 507 | + $camp_adicional .= ', pmieducar.cliente_suspensao cs '; | ||
| 508 | + $condicao .= ' AND c.cod_cliente = cs.ref_cod_cliente AND | ||
| 509 | + (cs.data_suspensao < current_date - cs.dias)'; | ||
| 510 | + } | ||
| 511 | + else { | ||
| 512 | + $camp_adicional .= ', pmieducar.cliente_suspensao cs '; | ||
| 513 | + $condicao .= ' AND (c.cod_cliente <> cs.ref_cod_cliente OR | ||
| 514 | + (cs.data_suspensao > current_date - cs.dias))'; | ||
| 515 | + } | ||
| 516 | + | ||
| 517 | + $sql1 = " | ||
| 518 | + SELECT | ||
| 519 | + c.cod_cliente, | ||
| 520 | + c.ref_idpes, | ||
| 521 | + c.ref_usuario_cad, | ||
| 522 | + c.login, | ||
| 523 | + p.nome, | ||
| 524 | + ct.nm_tipo, | ||
| 525 | + ct.cod_cliente_tipo, | ||
| 526 | + b.nm_biblioteca, | ||
| 527 | + b.cod_biblioteca, | ||
| 528 | + e.cod_escola as cod_escola, | ||
| 529 | + i.cod_instituicao, | ||
| 530 | + (SELECT 'S'::text | ||
| 531 | + FROM pmieducar.cliente_suspensao cs | ||
| 532 | + WHERE cs.ref_cod_cliente = c.cod_cliente | ||
| 533 | + AND cs.data_liberacao IS NULL) AS id_suspensao | ||
| 534 | + FROM | ||
| 535 | + pmieducar.cliente c, | ||
| 536 | + pmieducar.cliente_tipo_cliente ctc, | ||
| 537 | + pmieducar.cliente_tipo ct, | ||
| 538 | + pmieducar.biblioteca b, | ||
| 539 | + pmieducar.escola e, | ||
| 540 | + pmieducar.instituicao i, | ||
| 541 | + cadastro.pessoa p{$camp_adicional} | ||
| 542 | + WHERE | ||
| 543 | + c.cod_cliente = ctc.ref_cod_cliente | ||
| 544 | + AND ct.cod_cliente_tipo = ctc.ref_cod_cliente_tipo | ||
| 545 | + AND b.cod_biblioteca = ct.ref_cod_biblioteca | ||
| 546 | + AND e.cod_escola = b.ref_cod_escola | ||
| 547 | + AND i.cod_instituicao = b.ref_cod_instituicao | ||
| 548 | + AND e.ref_cod_instituicao = i.cod_instituicao{$condicao} | ||
| 549 | + AND p.idpes = c.ref_idpes | ||
| 550 | + AND c.ativo = '{$int_ativo}' | ||
| 551 | + AND ctc.ativo = '{$int_ativo}'"; | ||
| 552 | + | ||
| 553 | + $sql2 = " | ||
| 554 | + SELECT | ||
| 555 | + c.cod_cliente, | ||
| 556 | + c.ref_idpes, | ||
| 557 | + c.ref_usuario_cad, | ||
| 558 | + c.login, | ||
| 559 | + p.nome, | ||
| 560 | + ct.nm_tipo, | ||
| 561 | + ct.cod_cliente_tipo, | ||
| 562 | + b.nm_biblioteca, | ||
| 563 | + b.cod_biblioteca, | ||
| 564 | + null as cod_escola, | ||
| 565 | + i.cod_instituicao, | ||
| 566 | + (SELECT 'S'::text | ||
| 567 | + FROM pmieducar.cliente_suspensao cs | ||
| 568 | + WHERE cs.ref_cod_cliente = c.cod_cliente | ||
| 569 | + AND cs.data_liberacao IS NULL) AS id_suspensao | ||
| 570 | + FROM | ||
| 571 | + pmieducar.cliente c, | ||
| 572 | + pmieducar.cliente_tipo_cliente ctc, | ||
| 573 | + pmieducar.cliente_tipo ct, | ||
| 574 | + pmieducar.biblioteca b, | ||
| 575 | + pmieducar.instituicao i, | ||
| 576 | + cadastro.pessoa p{$camp_adicional} | ||
| 577 | + WHERE c.cod_cliente = ctc.ref_cod_cliente | ||
| 578 | + AND ct.cod_cliente_tipo = ctc.ref_cod_cliente_tipo | ||
| 579 | + AND b.cod_biblioteca = ct.ref_cod_biblioteca | ||
| 580 | + AND i.cod_instituicao = b.ref_cod_instituicao | ||
| 581 | + AND b.ref_cod_escola IS NULL | ||
| 582 | + AND ct.ref_cod_biblioteca = b.cod_biblioteca{$condicao} | ||
| 583 | + AND p.idpes = c.ref_idpes | ||
| 584 | + AND c.ativo = '{$int_ativo}' | ||
| 585 | + AND ctc.ativo = '{$int_ativo}'"; | ||
| 586 | + | ||
| 587 | + $filtros = ''; | ||
| 588 | + $whereAnd = ' AND '; | ||
| 589 | + | ||
| 590 | + if (is_numeric($int_cod_cliente)) { | ||
| 591 | + $filtros .= "{$whereAnd} c.cod_cliente = '{$int_cod_cliente}'"; | ||
| 592 | + $whereAnd = " AND "; | ||
| 593 | + } | ||
| 594 | + | ||
| 595 | + if (is_numeric($int_ref_usuario_exc)) { | ||
| 596 | + $filtros .= "{$whereAnd} c.ref_usuario_exc = '{$int_ref_usuario_exc}'"; | ||
| 597 | + $whereAnd = " AND "; | ||
| 598 | + } | ||
| 599 | + | ||
| 600 | + if (is_numeric($int_ref_usuario_cad)) { | ||
| 601 | + $filtros .= "{$whereAnd} c.ref_usuario_cad = '{$int_ref_usuario_cad}'"; | ||
| 602 | + $whereAnd = " AND "; | ||
| 603 | + } | ||
| 604 | + | ||
| 605 | + if (is_numeric($int_ref_idpes)) { | ||
| 606 | + $filtros .= "{$whereAnd} c.ref_idpes = '{$int_ref_idpes}'"; | ||
| 607 | + $whereAnd = " AND "; | ||
| 608 | + } | ||
| 609 | + | ||
| 610 | + if (is_numeric($int_login)) { | ||
| 611 | + $filtros .= "{$whereAnd} c.login = '{$int_login}'"; | ||
| 612 | + $whereAnd = " AND "; | ||
| 613 | + } | ||
| 614 | + | ||
| 615 | + if (is_string($str_senha)) { | ||
| 616 | + $filtros .= "{$whereAnd} c.senha = '{$str_senha}'"; | ||
| 617 | + $whereAnd = " AND "; | ||
| 618 | + } | ||
| 619 | + | ||
| 620 | + if (is_string($date_data_cadastro_ini)) { | ||
| 621 | + $filtros .= "{$whereAnd} c.data_cadastro >= '{$date_data_cadastro_ini}'"; | ||
| 622 | + $whereAnd = " AND "; | ||
| 623 | + } | ||
| 624 | + | ||
| 625 | + if (is_string($date_data_cadastro_fim)) { | ||
| 626 | + $filtros .= "{$whereAnd} c.data_cadastro <= '{$date_data_cadastro_fim}'"; | ||
| 627 | + $whereAnd = " AND "; | ||
| 628 | + } | ||
| 629 | + | ||
| 630 | + if (is_string($date_data_exclusao_ini)) { | ||
| 631 | + $filtros .= "{$whereAnd} c.data_exclusao >= '{$date_data_exclusao_ini}'"; | ||
| 632 | + $whereAnd = " AND "; | ||
| 633 | + } | ||
| 634 | + | ||
| 635 | + if (is_string($date_data_exclusao_fim)) { | ||
| 636 | + $filtros .= "{$whereAnd} c.data_exclusao <= '{$date_data_exclusao_fim}'"; | ||
| 637 | + $whereAnd = " AND "; | ||
| 638 | + } | ||
| 639 | + | ||
| 640 | + if (is_null($int_ativo) || $int_ativo) { | ||
| 641 | + $filtros .= "{$whereAnd} c.ativo = '1'"; | ||
| 642 | + $whereAnd = " AND "; | ||
| 643 | + } | ||
| 644 | + else { | ||
| 645 | + $filtros .= "{$whereAnd} c.ativo = '0'"; | ||
| 646 | + $whereAnd = " AND "; | ||
| 647 | + } | ||
| 648 | + | ||
| 649 | + if (is_string($str_nm_cliente)) { | ||
| 650 | + $filtros .= "{$whereAnd} p.nome LIKE '%{$str_nm_cliente}%'"; | ||
| 651 | + $whereAnd = " AND "; | ||
| 652 | + } | ||
| 653 | + | ||
| 654 | + if (is_numeric($int_cod_cliente_tipo)) { | ||
| 655 | + $filtros .= "{$whereAnd} ct.cod_cliente_tipo = '{$int_cod_cliente_tipo}'"; | ||
| 656 | + $whereAnd = " AND "; | ||
| 657 | + } | ||
| 658 | + | ||
| 659 | + if (is_array($int_cod_biblioteca)) { | ||
| 660 | + $array_biblioteca = implode(", ", $int_cod_biblioteca); | ||
| 661 | + $filtros .= "{$whereAnd} b.cod_biblioteca IN ({$array_biblioteca})"; | ||
| 662 | + $whereAnd = " AND "; | ||
| 663 | + } | ||
| 664 | + | ||
| 665 | + if (is_numeric($int_cod_biblioteca)) { | ||
| 666 | + $filtros .= "{$whereAnd} b.cod_biblioteca = '{$int_cod_biblioteca}'"; | ||
| 667 | + $whereAnd = " AND "; | ||
| 668 | + } | ||
| 669 | + | ||
| 670 | + if (is_numeric($int_cod_escola)) { | ||
| 671 | + $filtros .= "{$whereAnd} e.cod_escola = '{$int_cod_escola}'"; | ||
| 672 | + $whereAnd = " AND "; | ||
| 673 | + } | ||
| 674 | + | ||
| 675 | + if (is_numeric($int_cod_instituicao)) { | ||
| 676 | + $filtros .= "{$whereAnd} i.cod_instituicao = '{$int_cod_instituicao}'"; | ||
| 677 | + $whereAnd = " AND "; | ||
| 678 | + } | ||
| 679 | + | ||
| 680 | + if (is_string($str_suspenso)) { | ||
| 681 | + $filtros .= "{$whereAnd} cs.data_liberacao IS NULL"; | ||
| 682 | + $whereAnd = " AND "; | ||
| 683 | + } | ||
| 684 | + | ||
| 685 | + $db = new clsBanco(); | ||
| 686 | + $resultado = array(); | ||
| 687 | + | ||
| 688 | + $sql1 .= $filtros; | ||
| 689 | + $sql2 .= $filtros; | ||
| 690 | + | ||
| 691 | + if (is_numeric($int_cod_escola)) { | ||
| 692 | + $this->_total = $db->CampoUnico("SELECT count(0) FROM ({$sql1}) AS SUBQUERY"); | ||
| 693 | + } | ||
| 694 | + else { | ||
| 695 | + $this->_total = $db->CampoUnico("SELECT count(0) FROM (" . $sql1 . " UNION " . $sql2 . ") AS SUBQUERY"); | ||
| 696 | + } | ||
| 697 | + | ||
| 698 | + // Aplica ordenação e limite | ||
| 699 | + $sql2 .= $this->getOrderby() . $this->getLimite(); | ||
| 700 | + | ||
| 701 | + if (is_numeric($int_cod_escola)) { | ||
| 702 | + $sql = $sql1; | ||
| 703 | + } | ||
| 704 | + else { | ||
| 705 | + $sql = $sql1 . ' UNION ' . $sql2; | ||
| 706 | + } | ||
| 707 | + | ||
| 708 | + $db->Consulta($sql); | ||
| 709 | + | ||
| 710 | + while ($db->ProximoRegistro()) { | ||
| 711 | + $tupla = $db->Tupla(); | ||
| 712 | + | ||
| 713 | + $tupla["_total"] = $this->_total; | ||
| 714 | + $resultado[] = $tupla; | ||
| 715 | + } | ||
| 716 | + | ||
| 717 | + if (count($resultado) > 0) { | ||
| 718 | + return $resultado; | ||
| 719 | + } | ||
| 720 | + | ||
| 721 | + return FALSE; | ||
| 722 | + } | ||
| 690 | 723 | ||
| 691 | - while ( $db->ProximoRegistro() ) | ||
| 692 | - { | ||
| 693 | - $tupla = $db->Tupla(); | ||
| 694 | 724 | ||
| 695 | - $tupla["_total"] = $this->_total; | ||
| 696 | - $resultado[] = $tupla; | ||
| 697 | - } | ||
| 698 | - if( count( $resultado ) ) | ||
| 699 | - { | ||
| 700 | - return $resultado; | ||
| 701 | - } | ||
| 702 | - return false; | ||
| 703 | - } | ||
| 704 | 725 | ||
| 705 | /** | 726 | /** |
| 706 | * Retorna uma lista filtrados de acordo com os parametros | 727 | * Retorna uma lista filtrados de acordo com os parametros |
| @@ -991,5 +1012,4 @@ class clsPmieducarCliente | @@ -991,5 +1012,4 @@ class clsPmieducarCliente | ||
| 991 | return false; | 1012 | return false; |
| 992 | } | 1013 | } |
| 993 | 1014 | ||
| 994 | -} | ||
| 995 | -?> | 1015 | +} |
| 996 | \ No newline at end of file | 1016 | \ No newline at end of file |