From 90a5a63a89ece8a11348607cc42e145b90f567f5 Mon Sep 17 00:00:00 2001 From: Caroline Salib Date: Mon, 16 Nov 2015 23:30:46 -0200 Subject: [PATCH] Refatoração na sessão de endereçamento no cadastro de pessoa física; Portabilis/ieducar#151 --- ieducar/intranet/atendidos_cad.php | 174 ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++---------------------------------------------- ieducar/intranet/educar_pesquisa_cep_log_bairro.php | 32 ++++++++++++++++++++++++-------- ieducar/intranet/include/pessoa/clsBairro.inc.php | 13 ++++++++++--- ieducar/intranet/include/pessoa/clsCepLogradouro.inc.php | 22 +++++++++++++++++++--- ieducar/intranet/include/pessoa/clsCepLogradouroBairro.inc.php | 18 +++++++++++++++++- ieducar/intranet/include/pessoa/clsEnderecoPessoa.inc.php | 6 +++--- ieducar/intranet/include/pessoa/clsLogradouro.inc.php | 38 +++++++++++++++++++++++--------------- ieducar/intranet/scripts/padrao.js | 74 +++++++++++++++++++++++++++++++++++++++++++++----------------------------- ieducar/lib/Portabilis/View/Helper/Input/Resource/SimpleSearchBairro.php | 71 +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ ieducar/lib/Portabilis/View/Helper/Input/Resource/SimpleSearchLogradouro.php | 74 ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ ieducar/lib/Portabilis/View/Helper/Input/SimpleSearch.php | 11 ++++++++--- ieducar/lib/Portabilis/View/Helper/Inputs.php | 12 ++++++++++++ ieducar/modules/Api/Views/BairroController.php | 62 ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ ieducar/modules/Api/Views/EnderecoController.php | 75 +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ ieducar/modules/Api/Views/LogradouroController.php | 65 +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ ieducar/modules/Cadastro/Assets/Javascripts/PessoaFisica.js | 301 +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++-- ieducar/modules/Portabilis/Assets/Javascripts/Frontend/Inputs/Resource/SimpleSearchBairro.js | 18 ++++++++++++++++++ ieducar/modules/Portabilis/Assets/Javascripts/Frontend/Inputs/Resource/SimpleSearchLogradouro.js | 18 ++++++++++++++++++ ieducar/modules/Portabilis/Assets/Version.php | 2 +- 19 files changed, 972 insertions(+), 114 deletions(-) create mode 100644 ieducar/lib/Portabilis/View/Helper/Input/Resource/SimpleSearchBairro.php create mode 100644 ieducar/lib/Portabilis/View/Helper/Input/Resource/SimpleSearchLogradouro.php create mode 100644 ieducar/modules/Api/Views/BairroController.php create mode 100644 ieducar/modules/Api/Views/EnderecoController.php create mode 100644 ieducar/modules/Api/Views/LogradouroController.php create mode 100644 ieducar/modules/Portabilis/Assets/Javascripts/Frontend/Inputs/Resource/SimpleSearchBairro.js create mode 100644 ieducar/modules/Portabilis/Assets/Javascripts/Frontend/Inputs/Resource/SimpleSearchLogradouro.js diff --git a/ieducar/intranet/atendidos_cad.php b/ieducar/intranet/atendidos_cad.php index 33533f8..0edf5f3 100755 --- a/ieducar/intranet/atendidos_cad.php +++ b/ieducar/intranet/atendidos_cad.php @@ -110,6 +110,9 @@ class indice extends clsCadastro var $cor_raca; var $sus; var $nis_pis_pasep; + var $municipio_id; + var $bairro_id; + var $logradouro_id; var $caminho_det; var $caminho_lst; @@ -642,7 +645,45 @@ class indice extends clsCadastro // Detalhes do Endereo + if ($this->idlog){ + $objLogradouro = new clsLogradouro($this->idlog); + $detalheLogradouro = $objLogradouro->detalhe(); + if ($detalheLogradouro) + $this->municipio_id = $detalheLogradouro['idmun']; + + // Caso seja um endereo externo, tentamos ento recuperar a cidade pelo cep + }elseif($this->cep){ + + $numCep = idFederal2int($this->cep); + + $sql = "SELECT idmun, count(idmun) as count_mun FROM public.logradouro l, urbano.cep_logradouro cl + WHERE cl.idlog = l.idlog AND cl.cep = '{$numCep}' group by idmun order by count_mun desc limit 1"; + + $options = array('return_only' => 'first-field'); + $result = Portabilis_Utils_Database::fetchPreparedQuery($sql, $options); + + if ($result) + $this->municipio_id = $result; + + } + if ($this->cod_pessoa_fj){ + + $objPE = new clsPessoaEndereco($this->cod_pessoa_fj); + $det = $objPE->detalhe(); + + if($det){ + + $this->bairro_id = $det['idbai']; + $this->logradouro_id = $det['idlog']; + } + } + + if (!($this->bairro_id && $this->municipio_id && $this->logradouro_id)){ + $this->bairro_id = null; + $this->municipio_id = null; + $this->logradouro_id = null; + } $this->campoOculto('idbai', $this->idbai); $this->campoOculto('idlog', $this->idlog); $this->campoOculto('cep', $this->cep); @@ -651,14 +692,13 @@ class indice extends clsCadastro $this->campoOculto('id_cidade', $this->cidade); - // o endereamento opcional ao cadastrar pai ou me. - $enderecamentoObrigatorio = empty($parentType); + // o endereamento opcional + $enderecamentoObrigatorio = false; + // Caso o cep j esteja definido, os campos j vem desbloqueados inicialmente + $desativarCamposDefinidosViaCep = empty($this->cep); - // considera como endereo localizado por CEP quando alguma das variaveis de instancia - // idbai (bairro) ou idlog (logradouro) esto definidas, neste caso desabilita a edio - // dos campos definidos via CEP. - $desativarCamposDefinidosViaCep = ((bool)$GLOBALS['coreExt']['Config']->app->obriga_endereco_normalizado_pf) || ($this->idbai || $this->idlog); + $this->campoRotulo('','Enderaamento', 'Digite um cep ou clique na lupa para busca avanada'); $this->campoCep( 'cep_', @@ -666,46 +706,25 @@ class indice extends clsCadastro $this->cep, $enderecamentoObrigatorio, '-', - " ');\">", - $desativarCamposDefinidosViaCep + " ');\">", + false ); + $options = array('label' => Portabilis_String_Utils::toLatin1('Municpio'), 'required' => $enderecamentoObrigatorio, 'disabled' => $desativarCamposDefinidosViaCep); - // estado + $helperOptions = array('objectName' => 'municipio', + 'hiddenInputOptions' => array('options' => array('value' => $this->municipio_id))); - $options = array( - 'label' => 'Estado / Cidade', - 'value' => $this->sigla_uf, - 'disabled' => $desativarCamposDefinidosViaCep, - 'inline' => true, - 'required' => $enderecamentoObrigatorio - ); - - $helperOptions = array( - 'attrName' => 'sigla_uf' - ); - - $this->inputsHelper()->uf($options, $helperOptions); - - - // cidade - - $options = array( - 'label' => '', - 'placeholder' => 'Cidade', - 'value' => $this->cidade, - 'max_length' => 60, - 'disabled' => $desativarCamposDefinidosViaCep, - 'required' => $enderecamentoObrigatorio - ); + $this->inputsHelper()->simpleSearchMunicipio('municipio', $options, $helperOptions); - $this->inputsHelper()->text('cidade', $options); + $helperOptions = array('hiddenInputOptions' => array('options' => array('value' => $this->bairro_id))); + $options = array( 'label' => Portabilis_String_Utils::toLatin1('Bairro / Zona de Localizao - Buscar'), 'required' => $enderecamentoObrigatorio, 'disabled' => $desativarCamposDefinidosViaCep); - // bairro + $this->inputsHelper()->simpleSearchBairro('bairro', $options, $helperOptions); $options = array( - 'label' => 'Bairro / Zona localizao', + 'label' => 'Bairro / Zona de Localizao - Cadastrar', 'placeholder' => 'Bairro', 'value' => $this->bairro, 'max_length' => 40, @@ -725,7 +744,7 @@ class indice extends clsCadastro $options = array( 'label' => '', - 'placeholder' => 'Zona localizao', + 'placeholder' => 'Zona localizao ', 'value' => $this->zona_localizacao, 'disabled' => $desativarCamposDefinidosViaCep, 'resources' => $zonas, @@ -734,11 +753,16 @@ class indice extends clsCadastro $this->inputsHelper()->select('zona_localizacao', $options); + $helperOptions = array('hiddenInputOptions' => array('options' => array('value' => $this->logradouro_id))); + + $options = array('label' => 'Tipo / Logradouro - Buscar', 'required' => $enderecamentoObrigatorio, 'disabled' => $desativarCamposDefinidosViaCep); + + $this->inputsHelper()->simpleSearchLogradouro('logradouro', $options, $helperOptions); // tipo logradouro $options = array( - 'label' => 'Tipo / Logradouro', + 'label' => 'Tipo / Logradouro - Cadastrar', 'value' => $this->idtlog, 'disabled' => $desativarCamposDefinidosViaCep, 'inline' => true, @@ -1183,11 +1207,29 @@ class indice extends clsCadastro } protected function _createOrUpdatePessoaEndereco($pessoaId) { + + $cep = idFederal2Int($this->cep_); + + $objCepLogradouro = new ClsCepLogradouro($cep, $this->logradouro_id); + + if (! $objCepLogradouro->existe()) + $objCepLogradouro->cadastra(); + + $objCepLogradouroBairro = new ClsCepLogradouroBairro(); + $objCepLogradouroBairro->cep = $cep; + $objCepLogradouroBairro->idbai = $this->bairro_id; + $objCepLogradouroBairro->idlog = $this->logradouro_id; + + + if (! $objCepLogradouroBairro->existe()) + $objCepLogradouroBairro->cadastra(); + + #die("Morram
$cep
{$this->bairro_id}
{$this->logradouro_id}"); $endereco = new clsPessoaEndereco( $pessoaId, - idFederal2Int($this->cep), - $this->idlog, - $this->idbai, + $cep, + $this->logradouro_id, + $this->bairro_id, $this->numero, addslashes($this->complemento), FALSE, @@ -1232,13 +1274,53 @@ class indice extends clsCadastro } protected function createOrUpdateEndereco($pessoaId) { - $enderecoExterno = ! empty($this->cep_); - if (! $enderecoExterno && $this->cep && $this->idbai && $this->idlog) + if ($this->cep_ && is_numeric($this->bairro_id) && is_numeric($this->logradouro_id)) + $this->_createOrUpdatePessoaEndereco($pessoaId); + else if($this->cep_ && is_numeric($this->municipio_id)){ + + if (!is_numeric($this->bairro_id)){ + if ($this->canCreateBairro()) + $this->bairro_id = $this->createBairro(); + else + return; + } + + if (!is_numeric($this->logradouro_id)){ + if($this->canCreateLogradouro()) + $this->logradouro_id = $this->createLogradouro(); + else + return; + } + $this->_createOrUpdatePessoaEndereco($pessoaId); - elseif($enderecoExterno) - $this->_createOrUpdateEnderecoExterno($pessoaId); + }else{ + $endereco = new clsPessoaEndereco($pessoaId); + $endereco->exclui(); + } + + } + + protected function canCreateBairro(){ + return !empty($this->bairro) && !empty($this->zona_localizacao); + } + + protected function canCreateLogradouro(){ + return !empty($this->logradouro) && !empty($this->idtlog); + } + + protected function createBairro(){ + $objBairro = new clsBairro(null,$this->municipio_id,null,addslashes($this->bairro), $this->currentUserId()); + $objBairro->zona_localizacao = $this->zona_localizacao; + + return $objBairro->cadastra(); + } + + protected function createLogradouro(){ + $objLogradouro = new clsLogradouro(null,$this->idtlog, $this->logradouro, $this->municipio_id, + null, 'S', $this->currentUserId()); + return $objLogradouro->cadastra(); } protected function createOrUpdateTelefones($pessoaId) { diff --git a/ieducar/intranet/educar_pesquisa_cep_log_bairro.php b/ieducar/intranet/educar_pesquisa_cep_log_bairro.php index 5553dc2..8d6c125 100644 --- a/ieducar/intranet/educar_pesquisa_cep_log_bairro.php +++ b/ieducar/intranet/educar_pesquisa_cep_log_bairro.php @@ -131,7 +131,7 @@ class miolo1 extends clsListagem // consulta dados $pre_select = ' SELECT - c.idlog, c.cep, c.idbai, u.sigla_uf, m.nome, t.idtlog, m.idmun, b.zona_localizacao '; + c.idlog, c.cep, c.idbai, u.sigla_uf, m.nome, t.idtlog, m.idmun, b.zona_localizacao, t.descricao '; $select = ' FROM @@ -176,7 +176,7 @@ class miolo1 extends clsListagem $result = Portabilis_Utils_Database::fetchPreparedQuery($pre_select.$select, array('params' => array_values($params))); foreach ($result as $record) { - list($idlog, $cep, $idbai, $uf, $cidade, $tipoLogradouroId, $id_mun, $zona) = $record; + list($idlog, $cep, $idbai, $uf, $cidade, $tipoLogradouroId, $id_mun, $zona, $descricao) = $record; $cidade = addslashes($cidade); @@ -193,15 +193,15 @@ class miolo1 extends clsListagem $url = sprintf( '%%s', - $_SESSION['campo1'], $bairro, $_SESSION['campo2'], + $_SESSION['campo1'], $bairro.' / Zona'.$zona, $_SESSION['campo2'], $idbai, $_SESSION['campo3'], $cep, - $_SESSION['campo4'], $logradouro, + $_SESSION['campo4'], $descricao." ".$logradouro, $_SESSION['campo5'], $idlog, - $_SESSION['campo6'], $uf, $_SESSION['campo7'], $cidade, - $_SESSION['campo8'], $tipoLogradouroId, $_SESSION['campo9'], $s_end, - $_SESSION['campo10'], $cep2, $_SESSION['campo11'], $uf, + '', '', '', '', + '', '', '', '', + $_SESSION['campo10'], $cep2, $_SESSION['campo11'], $id_mun.' - '.$cidade.' ('.$uf.')', $_SESSION['campo12'], $_SESSION['campo13'], $id_mun, - $_SESSION['campo14'], $zona + '', '' ); $this->addLinhas(array( @@ -407,4 +407,20 @@ function liberaCamposOuvidoria() window.parent.fechaExpansivel('div_dinamico_' + (parent.DOM_divs.length * 1 - 1)); } + +function liberaCampos(){ + + parent.document.getElementById('municipio_municipio').disabled = false; + parent.document.getElementById('bairro_bairro').disabled = false; + parent.document.getElementById('logradouro_logradouro').disabled = false; + parent.document.getElementById('logradouro').disabled = false; + parent.document.getElementById('bairro').disabled = false; + parent.document.getElementById('idtlog').disabled = false; + parent.document.getElementById('zona_localizacao').disabled = false; + parent.document.getElementById('logradouro').value = ''; + parent.document.getElementById('bairro').value = ''; + parent.document.getElementById('idtlog').value = ''; + parent.document.getElementById('zona_localizacao').value = ''; + +} \ No newline at end of file diff --git a/ieducar/intranet/include/pessoa/clsBairro.inc.php b/ieducar/intranet/include/pessoa/clsBairro.inc.php index 6ea3844..12fea24 100755 --- a/ieducar/intranet/include/pessoa/clsBairro.inc.php +++ b/ieducar/intranet/include/pessoa/clsBairro.inc.php @@ -41,6 +41,7 @@ class clsBairro var $operacao; var $idsis_cad; var $idsis_rev; + var $zona_localizacao; var $tabela; var $schema = "public"; @@ -50,7 +51,7 @@ class clsBairro * * @return Object:clsBairro */ - function clsBairro( $int_idbai = false, $int_idmun=false, $str_geom=false, $str_nome=false , $int_idpes_cad = false, $int_idpes_rev = false, $str_origem_gravacao = false, $str_operacao=false, $int_idsis_cad=false, $int_idsis_rev=false ) + function clsBairro( $int_idbai = false, $int_idmun=false, $str_geom=false, $str_nome=false , $int_idpes_cad = false, $int_idpes_rev = false, $str_origem_gravacao = false, $str_operacao=false, $int_idsis_cad=false, $int_idsis_rev=false, $zona_localizacao = null ) { $this->idbai = $int_idbai; @@ -70,6 +71,7 @@ class clsBairro $this->idsis_rev = $int_idsis_rev; $this->operacao = $str_operacao; $this->origem_gravacao = $str_origem_gravacao; + $this->zona_localizacao = $zona_localizacao; $this->tabela = "bairro"; } @@ -113,9 +115,14 @@ class clsBairro $campos .= ", origem_gravacao"; $values .= ", '{$this->origem_gravacao}'"; } - $db->Consulta( "INSERT INTO {$this->schema}.{$this->tabela} ( idmun, nome, data_cad$campos ) VALUES ( '{$this->idmun}', '{$this->nome}', NOW()$values )" ); + if( is_numeric( $this->zona_localizacao) ) + { + $campos .= ", zona_localizacao"; + $values .= ", '{$this->zona_localizacao}' "; + } + $db->Consulta( "INSERT INTO {$this->schema}.{$this->tabela} ( idmun, origem_gravacao, operacao, idsis_cad, nome, data_cad$campos ) VALUES ( '{$this->idmun}', 'U', 'I', '9', '{$this->nome}', NOW()$values )" ); - return true; + return $db->InsertId("{$this->schema}.seq_bairro"); } return false; } diff --git a/ieducar/intranet/include/pessoa/clsCepLogradouro.inc.php b/ieducar/intranet/include/pessoa/clsCepLogradouro.inc.php index 4b71c6c..5325d44 100755 --- a/ieducar/intranet/include/pessoa/clsCepLogradouro.inc.php +++ b/ieducar/intranet/include/pessoa/clsCepLogradouro.inc.php @@ -82,7 +82,7 @@ class clsCepLogradouro $valores .= ", '$this->nrofin' "; } - $db->Consulta( "INSERT INTO {$this->schema}.{$this->tabela} (cep, idlog $campos) VALUES ( '{$this->cep}', '{$this->idlog}' $values )" ); + $db->Consulta( "INSERT INTO {$this->schema}.{$this->tabela} (cep, idlog, origem_gravacao, data_cad, operacao, idsis_Cad $campos) VALUES ( '{$this->cep}', '{$this->idlog}','U', NOW(), 'I', '9' $values )" ); } return false; @@ -130,7 +130,23 @@ class clsCepLogradouro } return false; } - + + /** + * Retorna um array com os dados de um registro. + * @return array + */ + function existe() + { + if (is_numeric($this->cep) && is_numeric($this->idlog)) { + $db = new clsBanco(); + $db->Consulta("SELECT 1 FROM {$this->schema}.{$this->tabela} WHERE cep = '{$this->cep}' AND idlog = '{$this->idlog}' "); + $db->ProximoRegistro(); + return $db->Tupla(); + } + + return FALSE; + } + /** * Remove o registro atual * @@ -184,7 +200,7 @@ class clsCepLogradouro $limit = ""; if(is_numeric($int_limite_ini) && is_numeric($int_limite_qtd)) { - $limit = " LIMIT $int_limite_ini,$int_limite_qtd"; + $limit = " LIMIT $int_limite_qtd OFFSET $int_limite_ini"; } $db = new clsBanco(); diff --git a/ieducar/intranet/include/pessoa/clsCepLogradouroBairro.inc.php b/ieducar/intranet/include/pessoa/clsCepLogradouroBairro.inc.php index 2d6499f..1bf2c0f 100755 --- a/ieducar/intranet/include/pessoa/clsCepLogradouroBairro.inc.php +++ b/ieducar/intranet/include/pessoa/clsCepLogradouroBairro.inc.php @@ -76,7 +76,7 @@ class clsCepLogradouroBairro // verificacoes de campos obrigatorios para insercao if( is_numeric($this->idlog) && is_numeric($this->cep) && is_numeric($this->idbai)) { - $db->Consulta( "INSERT INTO {$this->schema}.{$this->tabela} ($campos) VALUES ($values)" ); + $db->Consulta( "INSERT INTO {$this->schema}.{$this->tabela} (cep,idlog,idbai, origem_gravacao, data_cad, operacao, idsis_cad ) VALUES ('{$this->cep}', '{$this->idlog}', '{$this->idbai}', 'U', NOW(), 'I', '9' )" ); } return false; @@ -198,5 +198,21 @@ class clsCepLogradouroBairro } return false; } + + /** + * Retorna um array com os dados de um registro. + * @return array + */ + function existe() + { + if (is_numeric($this->cep) && is_numeric($this->idlog) && is_numeric($this->idbai)) { + $db = new clsBanco(); + $db->Consulta("SELECT 1 FROM {$this->schema}.{$this->tabela} WHERE cep = '{$this->cep}' AND idlog = '{$this->idlog}' AND idbai = '{$this->idbai}' "); + $db->ProximoRegistro(); + return $db->Tupla(); + } + + return FALSE; + } } ?> \ No newline at end of file diff --git a/ieducar/intranet/include/pessoa/clsEnderecoPessoa.inc.php b/ieducar/intranet/include/pessoa/clsEnderecoPessoa.inc.php index df93646..377606d 100755 --- a/ieducar/intranet/include/pessoa/clsEnderecoPessoa.inc.php +++ b/ieducar/intranet/include/pessoa/clsEnderecoPessoa.inc.php @@ -346,11 +346,11 @@ class clsPessoaEndereco $cep = $tupla['cep']; $tupla['cep'] = new clsCepLogradouro($cep, $tupla['idlog']); - $tupla['idlog'] = new clsCepLogradouro($cep, $tupla['idlog']); + #$tupla['idlog'] = new clsCepLogradouro($cep, $tupla['idlog']); - $tupla['idbai'] = new clsPublicBairro(NULL, NULL, $tupla['idbai']); + #$tupla['idbai'] = new clsPublicBairro(NULL, NULL, $tupla['idbai']); - $bairro = $tupla['idbai']->detalhe(); + #$bairro = $tupla['idbai']->detalhe(); $tupla['zona_localizacao'] = $bairro['zona_localizacao']; diff --git a/ieducar/intranet/include/pessoa/clsLogradouro.inc.php b/ieducar/intranet/include/pessoa/clsLogradouro.inc.php index 8a74a5e..ca53be7 100755 --- a/ieducar/intranet/include/pessoa/clsLogradouro.inc.php +++ b/ieducar/intranet/include/pessoa/clsLogradouro.inc.php @@ -32,9 +32,10 @@ class clsLogradouro var $idlog; var $idtlog; var $nome; - var $idnum; + var $idmun; var $geom; var $ident_oficial; + var $idpes_cad; var $tabela; var $schema = "public"; @@ -44,7 +45,7 @@ class clsLogradouro * * @return Object:clsLogradouro */ - function clsLogradouro( $int_idlog = false, $str_idtlog=false, $str_nome=false, $int_idnum=false, $str_geom=false, $str_ident_oficial=false ) + function clsLogradouro( $int_idlog = false, $str_idtlog=false, $str_nome=false, $int_idmun=false, $str_geom=false, $str_ident_oficial=false, $idpes_cad = null) { $this->idlog = $int_idlog; @@ -55,9 +56,10 @@ class clsLogradouro } $this->nome = $str_nome; - $this->idnum = $int_idnum; + $this->idmun = $int_idmun; $this->geom = $str_geom; $this->ident_oficial = $str_ident_oficial; + $this->idpes_cad = $idpes_cad; $this->tabela = "logradouro"; } @@ -71,7 +73,7 @@ class clsLogradouro { $db = new clsBanco(); // verificacoes de campos obrigatorios para insercao - if( is_string( $this->idtlog ) && is_string( $this->nome ) && is_numeric( $this->idnum ) && is_string($this->ident_oficial) ) + if( is_string( $this->idtlog ) && is_string( $this->nome ) && is_numeric( $this->idmun ) && is_string($this->ident_oficial) ) { $campos = ""; $values = ""; @@ -82,9 +84,15 @@ class clsLogradouro $values .= ", '{$this->geom}'"; } - $db->Consulta( "INSERT INTO {$this->schema}.{$this->tabela} ( idtlog, nome, idnum, ident_oficial$campos ) VALUES ( '{$this->idtlog}', '{$this->nome}', '{$this->idnum}'$values )" ); - - return true; + if( is_string( $this->idpes_cad ) ) + { + $campos .= ", idpes_cad"; + $values .= ", '{$this->idpes_cad}'"; + } + + $db->Consulta( "INSERT INTO {$this->schema}.{$this->tabela} ( idtlog, nome, idmun, origem_gravacao, ident_oficial,data_cad, OPERACAO, idsis_cad$campos ) VALUES ( '{$this->idtlog}', '{$this->nome}', '{$this->idmun}', 'U', '{$this->ident_oficial}', NOW(), 'I', '9' $values )" ); + + return $db->InsertId("{$this->schema}.seq_logradouro"); } return false; } @@ -97,9 +105,9 @@ class clsLogradouro function edita() { // verifica campos obrigatorios para edicao - if( is_numeric( $this->idlog ) && is_string( $this->idtlog ) && is_string( $this->nome ) && is_numeric( $this->idnum ) && is_string($this->ident_oficial) ) + if( is_numeric( $this->idlog ) && is_string( $this->idtlog ) && is_string( $this->nome ) && is_numeric( $this->idmun ) && is_string($this->ident_oficial) ) { - $set = "SET idtlog = '{$this->idtlog}', nome = '{$this->nome}', idnum = '{$this->idnum}', ident_oficial = '{$this->ident_oficial}'"; + $set = "SET idtlog = '{$this->idtlog}', nome = '{$this->nome}', idmun = '{$this->idmun}', ident_oficial = '{$this->ident_oficial}'"; if( is_string( $this->geom ) ) { @@ -172,9 +180,9 @@ class clsLogradouro $where .= "{$whereAnd}fcn_upper_nrm( nome ) ILIKE '%$str_nome%'"; $whereAnd = " AND "; } - if( is_numeric( $int_idnum ) ) + if( is_numeric( $int_idmun ) ) { - $where .= "{$whereAnd}idmun = '$int_idnum'"; + $where .= "{$whereAnd}idmun = '$int_idmun'"; $whereAnd = " AND "; } if( is_string( $str_geom ) ) @@ -226,7 +234,7 @@ class clsLogradouro * * @return Array */ - function listamun( $str_idtlog=false, $str_nome=false, $int_idnum=false, $int_idmun=false, $str_geom=false, $str_ident_oficial=false, $int_limite_ini=0, $int_limite_qtd=20, $str_orderBy = false ) + function listamun( $str_idtlog=false, $str_nome=false, $int_idmun=false, $int_idmun=false, $str_geom=false, $str_ident_oficial=false, $int_limite_ini=0, $int_limite_qtd=20, $str_orderBy = false ) { // verificacoes de filtros a serem usados $whereAnd = "WHERE "; @@ -240,9 +248,9 @@ class clsLogradouro $where .= "{$whereAnd}nome LIKE '%$str_nome%'"; $whereAnd = " AND "; } - if( is_numeric( $int_idnum ) ) + if( is_numeric( $int_idmun ) ) { - $where .= "{$whereAnd}idnum = '$int_idnum'"; + $where .= "{$whereAnd}idmun = '$int_idmun'"; $whereAnd = " AND "; } if( is_numeric( $int_idmun ) ) @@ -311,7 +319,7 @@ class clsLogradouro $this->idlog = $tupla["idlog"]; $this->idtlog = $tupla["idtlog"]; $this->nome = $tupla["nome"]; - $this->idnum = $tupla["idnum"]; + $this->idmun = $tupla["idmun"]; $this->geom = $tupla["geom"]; $this->ident_oficial = $tupla["ident_oficial"]; diff --git a/ieducar/intranet/scripts/padrao.js b/ieducar/intranet/scripts/padrao.js index 1a54a99..b247466 100755 --- a/ieducar/intranet/scripts/padrao.js +++ b/ieducar/intranet/scripts/padrao.js @@ -734,50 +734,66 @@ function cv_set_campo(campo1, valor1, campo2, valor2, campo3, valor3, campo4, valor9, campo10, valor10, campo11, valor11, campo12, campo13, valor13, campo14, valor14) { - obj1 = parent.document.getElementById(campo1); - obj1.value = valor1; - obj1.disabled = true; + obj1 = parent.document.getElementById(campo1); + if (obj1){ + obj1.value = valor1; + } - obj2 = parent.document.getElementById(campo2); - obj2.value = valor2; + obj2 = parent.document.getElementById(campo2); + if (obj2){ + obj2.value = valor2; + } - obj3 = parent.document.getElementById(campo3); - obj3.value = valor3; + obj3 = parent.document.getElementById(campo3); + if (obj3){ + obj3.value = valor3; + } - obj4 = parent.document.getElementById(campo4); - obj4.value = valor4; - obj4.disabled = true; + obj4 = parent.document.getElementById(campo4); + if (obj4){ + obj4.value = valor4; + } - obj5 = parent.document.getElementById(campo5); - obj5.value = valor5; + obj5 = parent.document.getElementById(campo5); + if (obj5){ + obj5.value = valor5; + } - obj6 = parent.document.getElementById(campo6); - obj6.value = valor6; + obj6 = parent.document.getElementById(campo6); + if (obj6){ + obj6.value = valor6; + } - obj7 = parent.document.getElementById(campo7); - obj7.value = valor7; - obj7.disabled = true; + obj7 = parent.document.getElementById(campo7); + if (obj7){ + obj7.value = valor7; + } - obj8 = parent.document.getElementById(campo8); - obj8.value = valor8; + obj8 = parent.document.getElementById(campo8); + if (obj8){ + obj8.value = valor8; + } obj9 = parent.document.getElementById(campo9); - if (obj9) { obj9.value = valor9; } - obj10 = parent.document.getElementById(campo10); - obj10.value = valor10; - obj10.disabled = true; + obj10 = parent.document.getElementById(campo10); + if (obj10){ + obj10.value = valor10; + } - obj11 = parent.document.getElementById(campo11); - obj11.value = valor11; - obj11.disabled = true; + obj11 = parent.document.getElementById(campo11); + if (obj11) { + obj11.value = valor11; + } - obj12 = parent.document.getElementById(campo12); - obj12.value = valor8; - obj12.disabled = true; + obj12 = parent.document.getElementById(campo12); + if (obj12) { + obj12.value = valor8; + obj12.disabled = true; + } if (parent.document.getElementById(campo13)) { obj13 = parent.document.getElementById(campo13); diff --git a/ieducar/lib/Portabilis/View/Helper/Input/Resource/SimpleSearchBairro.php b/ieducar/lib/Portabilis/View/Helper/Input/Resource/SimpleSearchBairro.php new file mode 100644 index 0000000..29f8afb --- /dev/null +++ b/ieducar/lib/Portabilis/View/Helper/Input/Resource/SimpleSearchBairro.php @@ -0,0 +1,71 @@ + + * + * Este programa é software livre; você pode redistribuí-lo e/ou modificá-lo + * sob os termos da Licença Pública Geral GNU conforme publicada pela Free + * Software Foundation; tanto a versão 2 da Licença, como (a seu critério) + * qualquer versão posterior. + * + * Este programa é distribuí­do na expectativa de que seja útil, porém, SEM + * NENHUMA GARANTIA; nem mesmo a garantia implí­cita de COMERCIABILIDADE OU + * ADEQUAÇÃO A UMA FINALIDADE ESPECÍFICA. Consulte a Licença Pública Geral + * do GNU para mais detalhes. + * + * Você deve ter recebido uma cópia da Licença Pública Geral do GNU junto + * com este programa; se não, escreva para a Free Software Foundation, Inc., no + * endereço 59 Temple Street, Suite 330, Boston, MA 02111-1307 USA. + * + * @author Lucas Schmoeller da Silva + * @category i-Educar + * @license @@license@@ + * @package Portabilis + * @since Arquivo disponível desde a versão ? + * @version $Id$ + */ +require_once 'lib/Portabilis/View/Helper/Input/SimpleSearch.php'; +require_once 'lib/Portabilis/Utils/Database.php'; +require_once 'lib/Portabilis/String/Utils.php'; +/** + * Portabilis_View_Helper_Input_SimpleSearchBairro class. + * + * @author Lucas Schmoeller da Silva + * @category i-Educar + * @license @@license@@ + * @package Portabilis + * @since Classe disponível desde a versão ? + * @version @@package_version@@ + */ +class Portabilis_View_Helper_Input_Resource_SimpleSearchBairro extends Portabilis_View_Helper_Input_SimpleSearch { + public function simpleSearchBairro($attrName, $options = array()) { + $defaultOptions = array('objectName' => 'bairro', + 'apiController' => 'Bairro', + 'apiResource' => 'bairro-search', + 'showIdOnValue' => false); + $options = $this->mergeOptions($options, $defaultOptions); + parent::simpleSearch($options['objectName'], $attrName, $options); + } + protected function resourceValue($id) { + if ($id) { + $sql = "select nome, zona_localizacao from public.bairro where idbai = $1"; + $options = array('params' => $id, 'return_only' => 'first-row'); + $municipio = Portabilis_Utils_Database::fetchPreparedQuery($sql, $options); + $nome = $municipio['nome']; + $zona = ($municipio['zona_localizacao'] == 1 ? 'Urbana' : 'Rural'); + return Portabilis_String_Utils::toLatin1($nome, array('transform' => true, 'escape' => false)) . " / Zona $zona"; + } + } + protected function inputPlaceholder($inputOptions) { + return 'Informe o nome do bairro'; + } + + protected function loadAssets() { + $jsFile = '/modules/Portabilis/Assets/Javascripts/Frontend/Inputs/Resource/SimpleSearchBairro.js'; + Portabilis_View_Helper_Application::loadJavascript($this->viewInstance, $jsFile); + } +} \ No newline at end of file diff --git a/ieducar/lib/Portabilis/View/Helper/Input/Resource/SimpleSearchLogradouro.php b/ieducar/lib/Portabilis/View/Helper/Input/Resource/SimpleSearchLogradouro.php new file mode 100644 index 0000000..da916af --- /dev/null +++ b/ieducar/lib/Portabilis/View/Helper/Input/Resource/SimpleSearchLogradouro.php @@ -0,0 +1,74 @@ + + * + * Este programa é software livre; você pode redistribuí-lo e/ou modificá-lo + * sob os termos da Licença Pública Geral GNU conforme publicada pela Free + * Software Foundation; tanto a versão 2 da Licença, como (a seu critério) + * qualquer versão posterior. + * + * Este programa é distribuí­do na expectativa de que seja útil, porém, SEM + * NENHUMA GARANTIA; nem mesmo a garantia implí­cita de COMERCIABILIDADE OU + * ADEQUAÇÃO A UMA FINALIDADE ESPECÍFICA. Consulte a Licença Pública Geral + * do GNU para mais detalhes. + * + * Você deve ter recebido uma cópia da Licença Pública Geral do GNU junto + * com este programa; se não, escreva para a Free Software Foundation, Inc., no + * endereço 59 Temple Street, Suite 330, Boston, MA 02111-1307 USA. + * + * @author Lucas Schmoeller da Silva + * @category i-Educar + * @license @@license@@ + * @package Portabilis + * @since Arquivo disponível desde a versão ? + * @version $Id$ + */ +require_once 'lib/Portabilis/View/Helper/Input/SimpleSearch.php'; +require_once 'lib/Portabilis/Utils/Database.php'; +require_once 'lib/Portabilis/String/Utils.php'; +/** + * Portabilis_View_Helper_Input_SimpleSearchLogradouro class. + * + * @author Lucas Schmoeller da Silva + * @category i-Educar + * @license @@license@@ + * @package Portabilis + * @since Classe disponível desde a versão ? + * @version @@package_version@@ + */ +class Portabilis_View_Helper_Input_Resource_SimpleSearchLogradouro extends Portabilis_View_Helper_Input_SimpleSearch { + public function simpleSearchLogradouro($attrName, $options = array()) { + $defaultOptions = array('objectName' => 'logradouro', + 'apiController' => 'Logradouro', + 'apiResource' => 'logradouro-search', + 'showIdOnValue' => false); + $options = $this->mergeOptions($options, $defaultOptions); + parent::simpleSearch($options['objectName'], $attrName, $options); + } + + protected function resourceValue($id) { + if ($id) { + $sql = "select nome, descricao as tipo_logradouro from + public.logradouro l left join urbano.tipo_logradouro tl on (l.idtlog = tl.idtlog) + where idlog = $1"; + $options = array('params' => $id, 'return_only' => 'first-row'); + $resource = Portabilis_Utils_Database::fetchPreparedQuery($sql, $options); + $tipo = Portabilis_String_Utils::toUtf8($resource['tipo_logradouro']); + $nome = Portabilis_String_Utils::toUtf8($resource['nome']); + + return Portabilis_String_Utils::toLatin1($tipo.' '.$nome, array('transform' => true, 'escape' => false)); + } + } + protected function inputPlaceholder($inputOptions) { + return 'Informe o nome do logradouro'; + } + protected function loadAssets() { + $jsFile = '/modules/Portabilis/Assets/Javascripts/Frontend/Inputs/Resource/SimpleSearchLogradouro.js'; + Portabilis_View_Helper_Application::loadJavascript($this->viewInstance, $jsFile); + } +} \ No newline at end of file diff --git a/ieducar/lib/Portabilis/View/Helper/Input/SimpleSearch.php b/ieducar/lib/Portabilis/View/Helper/Input/SimpleSearch.php index c7592bf..e169350 100644 --- a/ieducar/lib/Portabilis/View/Helper/Input/SimpleSearch.php +++ b/ieducar/lib/Portabilis/View/Helper/Input/SimpleSearch.php @@ -56,7 +56,8 @@ class Portabilis_View_Helper_Input_SimpleSearch extends Portabilis_View_Helper_I 'apiResource' => $objectName . '-search', 'searchPath' => '', 'addHiddenInput' => true, - 'hiddenInputOptions' => array()); + 'hiddenInputOptions' => array(), + 'showIdOnValue' => true); $options = $this->mergeOptions($options, $defaultOptions); @@ -68,8 +69,12 @@ class Portabilis_View_Helper_Input_SimpleSearch extends Portabilis_View_Helper_I // load value if received an resource id $resourceId = $options['hiddenInputOptions']['options']['value']; - if ($resourceId && ! $options['options']['value']) - $options['options']['value'] = $resourceId . " - ". $this->resourceValue($resourceId); + if ($resourceId && ! $options['options']['value']){ + if ($options['showIdOnValue']) + $options['options']['value'] = $resourceId . " - ". $this->resourceValue($resourceId); + else + $options['options']['value'] = $this->resourceValue($resourceId); + } $this->hiddenInput($objectName, $attrName, $options); $this->textInput($objectName, $attrName, $options); diff --git a/ieducar/lib/Portabilis/View/Helper/Inputs.php b/ieducar/lib/Portabilis/View/Helper/Inputs.php index 6346522..4a15bec 100644 --- a/ieducar/lib/Portabilis/View/Helper/Inputs.php +++ b/ieducar/lib/Portabilis/View/Helper/Inputs.php @@ -201,6 +201,18 @@ class Portabilis_View_Helper_Inputs { } + public function simpleSearchBairro($attrName, $inputOptions = array(), $helperOptions = array()) { + + $this->simpleSearchResourceInput('simpleSearchBairro', $attrName, $inputOptions, $helperOptions); + + } + + public function simpleSearchLogradouro($attrName, $inputOptions = array(), $helperOptions = array()) { + + $this->simpleSearchResourceInput('simpleSearchLogradouro', $attrName, $inputOptions, $helperOptions); + + } + // multiple search resource input helper diff --git a/ieducar/modules/Api/Views/BairroController.php b/ieducar/modules/Api/Views/BairroController.php new file mode 100644 index 0000000..1e5010d --- /dev/null +++ b/ieducar/modules/Api/Views/BairroController.php @@ -0,0 +1,62 @@ + + * + * Este programa é software livre; você pode redistribuí-lo e/ou modificá-lo + * sob os termos da Licença Pública Geral GNU conforme publicada pela Free + * Software Foundation; tanto a versão 2 da Licença, como (a seu critério) + * qualquer versão posterior. + * + * Este programa é distribuí­do na expectativa de que seja útil, porém, SEM + * NENHUMA GARANTIA; nem mesmo a garantia implí­cita de COMERCIABILIDADE OU + * ADEQUAÇÃO A UMA FINALIDADE ESPECÍFICA. Consulte a Licença Pública Geral + * do GNU para mais detalhes. + * + * Você deve ter recebido uma cópia da Licença Pública Geral do GNU junto + * com este programa; se não, escreva para a Free Software Foundation, Inc., no + * endereço 59 Temple Street, Suite 330, Boston, MA 02111-1307 USA. + * + * @author Lucas Schmoeller da Silva + * @category i-Educar + * @license @@license@@ + * @package Api + * @subpackage Modules + * @since Arquivo disponível desde a versão ? + * @version $Id$ + */ +require_once 'lib/Portabilis/Controller/ApiCoreController.php'; +require_once 'lib/Portabilis/Array/Utils.php'; +require_once 'intranet/include/clsBanco.inc.php'; +class BairroController extends ApiCoreController +{ + protected function searchOptions() { + $municipioId = $this->getRequest()->municipio_id ? $this->getRequest()->municipio_id : 0; + return array('sqlParams' => array($municipioId), 'selectFields' => array('zona_localizacao')); + + } + protected function formatResourceValue($resource) { + $zona = $resource['zona_localizacao'] == 1 ? 'Urbana' : 'Rural'; + $nome = $this->toUtf8($resource['name'], array('transform' => true)); + return "$nome / Zona $zona "; + } + protected function sqlsForNumericSearch() { + + $sqls[] = "select idbai as id, nome as name, zona_localizacao from + public.bairro where idbai like $1||'%' and idmun = $2 "; + return $sqls; + } + protected function sqlsForStringSearch() { + $sqls[] = "select idbai as id, nome as name, zona_localizacao from + public.bairro where lower(to_ascii(nome)) like '%'||lower(to_ascii($1))||'%' and idmun = $2 "; + return $sqls; + } + public function Gerar() { + if ($this->isRequestFor('get', 'bairro-search')) + $this->appendResponse($this->search()); + else + $this->notImplementedOperationError(); + } +} \ No newline at end of file diff --git a/ieducar/modules/Api/Views/EnderecoController.php b/ieducar/modules/Api/Views/EnderecoController.php new file mode 100644 index 0000000..8733e57 --- /dev/null +++ b/ieducar/modules/Api/Views/EnderecoController.php @@ -0,0 +1,75 @@ + + * + * Este programa é software livre; você pode redistribuí-lo e/ou modificá-lo + * sob os termos da Licença Pública Geral GNU conforme publicada pela Free + * Software Foundation; tanto a versão 2 da Licença, como (a seu critério) + * qualquer versão posterior. + * + * Este programa é distribuí­do na expectativa de que seja útil, porém, SEM + * NENHUMA GARANTIA; nem mesmo a garantia implí­cita de COMERCIABILIDADE OU + * ADEQUAÇÃO A UMA FINALIDADE ESPECÍFICA. Consulte a Licença Pública Geral + * do GNU para mais detalhes. + * + * Você deve ter recebido uma cópia da Licença Pública Geral do GNU junto + * com este programa; se não, escreva para a Free Software Foundation, Inc., no + * endereço 59 Temple Street, Suite 330, Boston, MA 02111-1307 USA. + * + * @author Lucas Schmoeller da Silva + * @category i-Educar + * @license @@license@@ + * @package Api + * @subpackage Modules + * @since Arquivo disponível desde a versão ? + * @version $Id$ + */ +require_once 'lib/Portabilis/Controller/ApiCoreController.php'; +require_once 'lib/Portabilis/Array/Utils.php'; +require_once 'lib/Portabilis/String/Utils.php'; +require_once 'intranet/include/clsBanco.inc.php'; +require_once 'intranet/include/funcoes.inc.php'; +class EnderecoController extends ApiCoreController +{ + protected function getPrimeiroEnderecoCep() { + + $cep = idFederal2int($this->getRequest()->cep); + + // consulta dados + $select = " + SELECT + c.idlog, c.cep, c.idbai, b.nome as nome_bairro, l.nome as nome_logradouro, u.sigla_uf, m.nome, t.idtlog, t.descricao as tipo_logradouro, m.idmun, b.zona_localizacao + + FROM + urbano.cep_logradouro_bairro c, public.bairro b, public.logradouro l, + public.municipio m, public.uf u, urbano.tipo_logradouro t + WHERE + c.idlog = l.idlog AND + c.idbai = b.idbai AND + l.idmun = b.idmun AND + l.idmun = m.idmun AND + l.idtlog = t.idtlog AND + m.sigla_uf = u.sigla_uf AND + c.cep = {$cep} LIMIT 1"; + + $result = Portabilis_Utils_Database::fetchPreparedQuery($select, array('return_only' => 'first-line')); + $return; + if (is_array($result)){ + $return = array(); + foreach ($result as $name => $value) { + $return[$name] = Portabilis_String_Utils::toUtf8($value); + } + } + + return $return; + } + public function Gerar() { + if ($this->isRequestFor('get', 'primeiro_endereco_cep')) + $this->appendResponse($this->getPrimeiroEnderecoCep()); + else + $this->notImplementedOperationError(); + } +} \ No newline at end of file diff --git a/ieducar/modules/Api/Views/LogradouroController.php b/ieducar/modules/Api/Views/LogradouroController.php new file mode 100644 index 0000000..136a5c1 --- /dev/null +++ b/ieducar/modules/Api/Views/LogradouroController.php @@ -0,0 +1,65 @@ + + * + * Este programa é software livre; você pode redistribuí-lo e/ou modificá-lo + * sob os termos da Licença Pública Geral GNU conforme publicada pela Free + * Software Foundation; tanto a versão 2 da Licença, como (a seu critério) + * qualquer versão posterior. + * + * Este programa é distribuí­do na expectativa de que seja útil, porém, SEM + * NENHUMA GARANTIA; nem mesmo a garantia implí­cita de COMERCIABILIDADE OU + * ADEQUAÇÃO A UMA FINALIDADE ESPECÍFICA. Consulte a Licença Pública Geral + * do GNU para mais detalhes. + * + * Você deve ter recebido uma cópia da Licença Pública Geral do GNU junto + * com este programa; se não, escreva para a Free Software Foundation, Inc., no + * endereço 59 Temple Street, Suite 330, Boston, MA 02111-1307 USA. + * + * @author Lucas Schmoeller da Silva + * @category i-Educar + * @license @@license@@ + * @package Api + * @subpackage Modules + * @since Arquivo disponível desde a versão ? + * @version $Id$ + */ +require_once 'lib/Portabilis/Controller/ApiCoreController.php'; +require_once 'lib/Portabilis/Array/Utils.php'; +require_once 'intranet/include/clsBanco.inc.php'; +class LogradouroController extends ApiCoreController +{ + protected function searchOptions() { + $municipioId = $this->getRequest()->municipio_id ? $this->getRequest()->municipio_id : 0; + return array('sqlParams' => array($municipioId), 'selectFields' => array('tipo_logradouro')); + + } + protected function sqlsForNumericSearch() { + $sqls[] = "select distinct idlog as id, nome as name, descricao as tipo_logradouro from + public.logradouro l left join urbano.tipo_logradouro tl on (l.idtlog = tl.idtlog) + where idlog like $1||'%' and idmun = $2 "; + return $sqls; + } + protected function sqlsForStringSearch() { + $sqls[] = "select distinct idlog as id, nome as name, descricao as tipo_logradouro from + public.logradouro l left join urbano.tipo_logradouro tl on (l.idtlog = tl.idtlog) + where (lower(to_ascii(nome)) like '%'||lower(to_ascii($1))||'%' + OR lower(to_ascii(descricao))|| ' ' ||lower(to_ascii(nome)) like '%'||lower(to_ascii($1))||'%') + and idmun = $2 "; + return $sqls; + } + protected function formatResourceValue($resource) { + $tipo = $resource['tipo_logradouro']; + $nome = $this->toUtf8($resource['name'], array('transform' => true)); + return "$tipo $nome"; + } + public function Gerar() { + if ($this->isRequestFor('get', 'logradouro-search')) + $this->appendResponse($this->search()); + else + $this->notImplementedOperationError(); + } +} \ No newline at end of file diff --git a/ieducar/modules/Cadastro/Assets/Javascripts/PessoaFisica.js b/ieducar/modules/Cadastro/Assets/Javascripts/PessoaFisica.js index 192ee28..09dab17 100644 --- a/ieducar/modules/Cadastro/Assets/Javascripts/PessoaFisica.js +++ b/ieducar/modules/Cadastro/Assets/Javascripts/PessoaFisica.js @@ -1,4 +1,3 @@ - // before page is ready function hrefToCreateParent(parentType) { @@ -164,6 +163,12 @@ var validatesUniquenessOfCpf = function() { var submitForm = function(event) { + if ($j('#cep_').val()){ + if (!validateEndereco()){ + alert('Preencha os campos de endera\u00e7amento corretamente.') + return; + } + } if ($cpfField.val()) { $j(document).data('submit_form_after_ajax_validation', true); validatesUniquenessOfCpf(); @@ -213,6 +218,9 @@ $j(document).ready(function() { $submitButton.removeAttr('onclick'); $submitButton.click(submitForm); + hideEnderecoFields(); + fixUpPlaceholderEndereco(); + }); // ready @@ -287,4 +295,293 @@ var simpleSearchMaeOptions = { }; $paiNomeField.focusout(changeVisibilityOfLinksToPessoaPai); -$maeNomeField.focusout(changeVisibilityOfLinksToPessoaMae); \ No newline at end of file +$maeNomeField.focusout(changeVisibilityOfLinksToPessoaMae); + +// --------------------------------- SCRIPTS ENDEREÇAMENTO ---------------------------------------- // + +function hideEnderecoFields(){ + if($j('#cep_').val()){ + + if ($j('#bairro_id').val()) + bloqueiaCadastroBairro(); + else + bloqueiaBuscaBairro(); + + if ($j('#logradouro_id').val()) + bloqueiaCadastroLogradouro(); + else + bloqueiaBuscaLogradouro(); + + }else{ + + $j('#bairro').closest('tr').hide(); + $j('#logradouro').closest('tr').hide(); + } +} + + +// Campo CEP + +var handleGetCep = function(dataResponse) { + + if (dataResponse['cep']){ + $j('#municipio_id').val(dataResponse['idmun']); + $j('#municipio_municipio').val(dataResponse['idmun'] + ' - ' + dataResponse['nome'] + ' (' + dataResponse['sigla_uf'] + ')'); + $j('#bairro_id').val(dataResponse['idbai']); + $j('#bairro_bairro').val(dataResponse['nome_bairro']+' / Zona '+(dataResponse['zona_localizacao'] == 1 ? 'Urbana' : 'Rural')); + $j('#logradouro_id').val(dataResponse['idlog']); + $j('#logradouro_logradouro').val(dataResponse['tipo_logradouro']+' '+dataResponse['nome_logradouro']); + + }else{ + $j('#municipio_id').val(''); + $j('#municipio_municipio').val(''); + $j('#bairro_id').val(''); + $j('#bairro_bairro').val(''); + $j('#logradouro_id').val(''); + $j('#logradouro_logradouro').val(''); + } + + $j('#municipio_municipio').removeAttr('disabled'); + $j('#bairro_bairro').removeAttr('disabled'); + $j('#logradouro_logradouro').removeAttr('disabled'); + $j('#bairro').removeAttr('disabled'); + $j('#zona_localizacao').removeAttr('disabled'); + $j('#idtlog').removeAttr('disabled'); + $j('#logradouro').removeAttr('disabled'); + bloqueiaCadastroBairro(); + bloqueiaCadastroLogradouro(); + fixUpPlaceholderEndereco(); +} + +// Caso cep seja válido dispara ajax para recuperar dados do primeiro cep encontrado +var searchCep = function() { + + var cep = $j('#cep_').val(); + + if (checkCepFields(cep)) { + var additionalVars = { + cep : cep, + }; + + var options = { + url : getResourceUrlBuilder.buildUrl('/module/Api/endereco', 'primeiro_endereco_cep', additionalVars), + dataType : 'json', + data : {}, + success : handleGetCep + }; + + getResource(options); + }else + clearEnderecoFields(); + +} +// Ao digitar um cep inválido todos os campos de endereçamento são bloqueados e limpados +function clearEnderecoFields(){ + $j('#bairro').attr('disabled','disabled'); + $j('#zona_localizacao').attr('disabled','disabled'); + $j('#bairro_bairro').attr('disabled','disabled'); + $j('#logradouro_logradouro').attr('disabled','disabled'); + $j('#idtlog').attr('disabled','disabled'); + $j('#logradouro').attr('disabled','disabled'); + $j('#municipio_municipio').attr('disabled','disabled'); + $j('#bairro').val(''); + $j('#zona_localizacao').val(''); + $j('#bairro_bairro').val(''); + $j('#logradouro_logradouro').val(''); + $j('#idtlog').val(''); + $j('#logradouro').val(''); + $j('#bairro_id').val(''); + $j('#logradouro_id').val(''); + $j('#municipio_municipio').val(''); + $j('#municipio_id').val(''); +} +// Verifica se o formato do cep é válido +function checkCepFields(cep) { + var regexp = /[0-9]{5}\-[0-9]{3}/; + var valid = regexp.test(cep); + return valid; +} + +// Eventos que escondem//apagam campos não usados na alternância entre cadastro/busca +function bloqueiaCadastroBairro(){ + if (checkCepFields($j('#cep_').val())){ + $j('#bairro').closest('tr').hide(); + $j('#bairro_bairro').closest('tr').show(); + $j('#zona_localizacao').val(''); + $j('#bairro').val(''); + } +} + +function bloqueiaBuscaBairro(){ + if (checkCepFields($j('#cep_').val())){ + $j('#bairro_bairro').closest('tr').hide(); + $j('#bairro').closest('tr').show(); + $j('#bairro_bairro').val(''); + $j('#bairro_id').val(''); + } +} + +function bloqueiaCadastroLogradouro(){ + if (checkCepFields($j('#cep_').val())){ + $j('#idtlog').closest('tr').hide(); + $j('#logradouro_logradouro').closest('tr').show(); + $j('#idtlog').val(''); + $j('#logradouro').val(''); + } +} + +function bloqueiaBuscaLogradouro(){ + if (checkCepFields($j('#cep_').val())){ + $j('#logradouro_logradouro').closest('tr').hide(); + $j('#idtlog').closest('tr').show(); + $j('#logradouro_logradouro').val(''); + $j('#logradouro_id').val(''); + } +} + +// Dispara evento para buscar CEP quando o mesmo for preenchido sem utilizar a lupa +$j('#cep_').keyup(searchCep); +$j('#cep_').change(searchCep); + +// Limpa campos logradouro e bairro simpleSearch +function clearLogradouroAndBairroFields(){ + $j('#logradouro_logradouro').val(''); + $j('#logradouro_id').val(''); + $j('#bairro_bairro').val(''); + $j('#bairro_id').val(''); +} + +// Adiciona links para Informar/Atualizar troca entre cadastro ou busca +function addLinksEnderecamento(){ + $j('') .html('ou cadastre um novo bairro') + .attr('id', 'span-busca-bairro') + .css('color','blue') + .css('margin-left','5px') + .addClass('decorated') + .appendTo($j('#bairro_bairro').closest('td')); + + $j('').html('ou busque um bairro existente') + .attr('id', 'span-cad-bairro') + .css('color','blue') + .css('margin-left','5px') + .addClass('decorated') + .appendTo($j('#zona_localizacao').closest('td')); + + $j('').html('ou cadastre um novo logradouro') + .attr('id', 'span-busca-logradouro') + .css('color','blue') + .css('margin-left','5px') + .addClass('decorated') + .appendTo($j('#logradouro_logradouro').closest('td')); + + $j('').html('ou busque logradouro existente') + .attr('id', 'span-cad-logradouro') + .css('color','blue') + .css('margin-left','5px') + .addClass('decorated') + .appendTo($j('#idtlog').closest('td')); +} + +addLinksEnderecamento(); + +// Dispara evento para alterar entre Cadastro/Busca +$j('#span-busca-bairro').click(bloqueiaBuscaBairro); +$j('#span-cad-bairro').click(bloqueiaCadastroBairro); +$j('#span-busca-logradouro').click(bloqueiaBuscaLogradouro); +$j('#span-cad-logradouro').click(bloqueiaCadastroLogradouro); + +// Altera zebrado para não interferir quando for trocado entre cadastro/busca de bairro/logradouro +function alteraZebradoEnderacamento(){ + if ($j('#bairro').closest('td').hasClass('formmdtd')) + $j('#bairro').closest('tr').find('td').toggleClass('formmdtd formlttd'); + else + $j('#bairro').closest('tr').find('td').toggleClass('formlttd formmdtd'); + + if ($j('#logradouro_logradouro').closest('td').hasClass('formmdtd')) + $j('#logradouro_logradouro').closest('tr').find('td').toggleClass('formmdtd formlttd'); + else + $j('#logradouro_logradouro').closest('tr').find('td').toggleClass('formlttd formmdtd'); +} + +alteraZebradoEnderacamento(); + +// Correções para apagarem o valor do campo ID quando for deletado o valor do simpleSearch +$j('#municipio_municipio').keyup( function(){ + if ($j('#municipio_municipio').val() == '') + $j('#municipio_id').val('').trigger('change'); +}); + +$j('#bairro_bairro').focusout( function(){ + if ($j('#bairro_bairro').val() == '') + $j('#bairro_id').val(''); +}); + +$j('#logradouro_logradouro').focusout( function(){ + if ($j('#logradouro_logradouro').val() == '') + $j('#logradouro_id').val(''); +}); + +/* Como os campos SimpleSearchBairro e SimpleSearchLogradouro dependem do valor do municipio_id, + quando o mesmo for alterado dispara um evento para apagar esses campos dependentes */ +$j('#municipio_id').change(clearLogradouroAndBairroFields); + +function fixUpPlaceholderEndereco(){ + $j('#municipio_municipio').attr('placeholder' , 'Digite o nome de um munic\u00edpio para buscar'); + $j('#bairro_bairro').attr('placeholder' , 'Digite o nome de um bairro para buscar'); + $j('#logradouro_logradouro').attr('placeholder' , 'Digite o nome de um logradouro para buscar'); + $j('#bairro').attr('placeholder' , 'Digite o nome do novo bairro'); + $j('#logradouro').attr('placeholder' , 'Digite o nome do novo logradouro'); +} + +function validateEndereco(){ + + var err = false; + + if (!$j('#municipio_id').val()){ + $j('#municipio_municipio').addClass('error'); + $j('#municipio_id').addClass('error'); + err = true; + } + + if ($j('#logradouro_logradouro').closest('tr').is(':visible')){ + + if (!$j('#logradouro_id').val()){ + $j('#logradouro_logradouro').addClass('error'); + $j('#logradouro_id').addClass('error'); + err = true; + } + }else{ + if (!$j('#logradouro').val()){ + $j('#logradouro').addClass('error'); + err = true; + } + if (!$j('#idtlog').val()){ + $j('#idtlog').addClass('error'); + err = true; + } + } + if ($j('#bairro_bairro').closest('tr').is(':visible')){ + if (!$j('#bairro_id').val()){ + $j('#bairro_bairro').addClass('error'); + $j('#bairro_id').addClass('error'); + err = true; + } + + }else{ + + if (!$j('#bairro').val()){ + $j('#bairro').addClass('error'); + err = true; + } + + if (!$j('#zona_localizacao').val()){ + $j('#zona_localizacao').addClass('error'); + err = true; + } + } + + return !err; + +} + +// --------------------------------- FIM SCRIPTS ENDEREÇAMENTO ---------------------------------------- // diff --git a/ieducar/modules/Portabilis/Assets/Javascripts/Frontend/Inputs/Resource/SimpleSearchBairro.js b/ieducar/modules/Portabilis/Assets/Javascripts/Frontend/Inputs/Resource/SimpleSearchBairro.js new file mode 100644 index 0000000..1ccebf3 --- /dev/null +++ b/ieducar/modules/Portabilis/Assets/Javascripts/Frontend/Inputs/Resource/SimpleSearchBairro.js @@ -0,0 +1,18 @@ +var simpleSearchBairroOptions = { + + params : { + municipio_id : function() { + return $j('#municipio_id').val() + } + }, + + canSearch : function() { + + if (! $j('#municipio_id').val()) { + alert('Selecione um munic\u00edpio.'); + return false; + } + + return true; + } +}; \ No newline at end of file diff --git a/ieducar/modules/Portabilis/Assets/Javascripts/Frontend/Inputs/Resource/SimpleSearchLogradouro.js b/ieducar/modules/Portabilis/Assets/Javascripts/Frontend/Inputs/Resource/SimpleSearchLogradouro.js new file mode 100644 index 0000000..85d13ed --- /dev/null +++ b/ieducar/modules/Portabilis/Assets/Javascripts/Frontend/Inputs/Resource/SimpleSearchLogradouro.js @@ -0,0 +1,18 @@ +var simpleSearchLogradouroOptions = { + + params : { + municipio_id : function() { + return $j('#municipio_id').val() + } + }, + + canSearch : function() { + + if (! $j('#municipio_id').val()) { + alert('Selecione um munic\u00edpio.'); + return false; + } + + return true; + } +}; \ No newline at end of file diff --git a/ieducar/modules/Portabilis/Assets/Version.php b/ieducar/modules/Portabilis/Assets/Version.php index 17c6013..f7bd1c8 100644 --- a/ieducar/modules/Portabilis/Assets/Version.php +++ b/ieducar/modules/Portabilis/Assets/Version.php @@ -5,7 +5,7 @@ class Portabilis_Assets_Version { - const VERSION = '11'; + const VERSION = '12'; } ?> -- libgit2 0.21.2