Commit 90a5a63a89ece8a11348607cc42e145b90f567f5

Authored by Caroline Salib
1 parent 90cbc8dc
Exists in master

Refatoração na sessão de endereçamento no cadastro de pessoa física;

Portabilis/ieducar#151
ieducar/intranet/atendidos_cad.php
... ... @@ -110,6 +110,9 @@ class indice extends clsCadastro
110 110 var $cor_raca;
111 111 var $sus;
112 112 var $nis_pis_pasep;
  113 + var $municipio_id;
  114 + var $bairro_id;
  115 + var $logradouro_id;
113 116  
114 117 var $caminho_det;
115 118 var $caminho_lst;
... ... @@ -642,7 +645,45 @@ class indice extends clsCadastro
642 645  
643 646  
644 647 // Detalhes do Endereço
  648 + if ($this->idlog){
645 649  
  650 + $objLogradouro = new clsLogradouro($this->idlog);
  651 + $detalheLogradouro = $objLogradouro->detalhe();
  652 + if ($detalheLogradouro)
  653 + $this->municipio_id = $detalheLogradouro['idmun'];
  654 +
  655 + // Caso seja um endereço externo, tentamos então recuperar a cidade pelo cep
  656 + }elseif($this->cep){
  657 +
  658 + $numCep = idFederal2int($this->cep);
  659 +
  660 + $sql = "SELECT idmun, count(idmun) as count_mun FROM public.logradouro l, urbano.cep_logradouro cl
  661 + WHERE cl.idlog = l.idlog AND cl.cep = '{$numCep}' group by idmun order by count_mun desc limit 1";
  662 +
  663 + $options = array('return_only' => 'first-field');
  664 + $result = Portabilis_Utils_Database::fetchPreparedQuery($sql, $options);
  665 +
  666 + if ($result)
  667 + $this->municipio_id = $result;
  668 +
  669 + }
  670 + if ($this->cod_pessoa_fj){
  671 +
  672 + $objPE = new clsPessoaEndereco($this->cod_pessoa_fj);
  673 + $det = $objPE->detalhe();
  674 +
  675 + if($det){
  676 +
  677 + $this->bairro_id = $det['idbai'];
  678 + $this->logradouro_id = $det['idlog'];
  679 + }
  680 + }
  681 +
  682 + if (!($this->bairro_id && $this->municipio_id && $this->logradouro_id)){
  683 + $this->bairro_id = null;
  684 + $this->municipio_id = null;
  685 + $this->logradouro_id = null;
  686 + }
646 687 $this->campoOculto('idbai', $this->idbai);
647 688 $this->campoOculto('idlog', $this->idlog);
648 689 $this->campoOculto('cep', $this->cep);
... ... @@ -651,14 +692,13 @@ class indice extends clsCadastro
651 692 $this->campoOculto('id_cidade', $this->cidade);
652 693  
653 694  
654   - // o endereçamento é opcional ao cadastrar pai ou mãe.
655   - $enderecamentoObrigatorio = empty($parentType);
  695 + // o endereçamento é opcional
  696 + $enderecamentoObrigatorio = false;
656 697  
  698 + // Caso o cep já esteja definido, os campos já vem desbloqueados inicialmente
  699 + $desativarCamposDefinidosViaCep = empty($this->cep);
657 700  
658   - // considera como endereço localizado por CEP quando alguma das variaveis de instancia
659   - // idbai (bairro) ou idlog (logradouro) estão definidas, neste caso desabilita a edição
660   - // dos campos definidos via CEP.
661   - $desativarCamposDefinidosViaCep = ((bool)$GLOBALS['coreExt']['Config']->app->obriga_endereco_normalizado_pf) || ($this->idbai || $this->idlog);
  701 + $this->campoRotulo('','<b>Enderaçamento</b>', '<i>Digite um cep ou clique na lupa para busca avançada</i>');
662 702  
663 703 $this->campoCep(
664 704 'cep_',
... ... @@ -666,46 +706,25 @@ class indice extends clsCadastro
666 706 $this->cep,
667 707 $enderecamentoObrigatorio,
668 708 '-',
669   - "&nbsp;<img id='lupa' src=\"imagens/lupa.png\" border=\"0\" onclick=\"showExpansivel(500, 550, '<iframe name=\'miolo\' id=\'miolo\' frameborder=\'0\' height=\'100%\' width=\'500\' marginheight=\'0\' marginwidth=\'0\' src=\'educar_pesquisa_cep_log_bairro.php?campo1=bairro&campo2=idbai&campo3=cep&campo4=logradouro&campo5=idlog&campo6=ref_sigla_uf&campo7=cidade&campo8=ref_idtlog&campo9=isEnderecoExterno&campo10=cep_&campo11=sigla_uf&campo12=idtlog&campo13=id_cidade&campo14=zona_localizacao\'></iframe>');\">",
670   - $desativarCamposDefinidosViaCep
  709 + "&nbsp;<img id='lupa' src=\"imagens/lupa.png\" border=\"0\" onclick=\"showExpansivel(500, 550, '<iframe name=\'miolo\' id=\'miolo\' frameborder=\'0\' height=\'100%\' width=\'500\' marginheight=\'0\' marginwidth=\'0\' src=\'educar_pesquisa_cep_log_bairro.php?campo1=bairro&campo2=idbai&campo3=cep&campo4=logradouro&campo5=idlog&campo6=ref_sigla_uf&campo7=cidade&campo8=ref_idtlog&campo9=isEnderecoExterno&campo10=cep_&campo11=municipio_municipio&campo12=idtlog&campo13=municipio_id&campo14=zona_localizacao\'></iframe>');\">",
  710 + false
671 711 );
672 712  
  713 + $options = array('label' => Portabilis_String_Utils::toLatin1('Município'), 'required' => $enderecamentoObrigatorio, 'disabled' => $desativarCamposDefinidosViaCep);
673 714  
674   - // estado
  715 + $helperOptions = array('objectName' => 'municipio',
  716 + 'hiddenInputOptions' => array('options' => array('value' => $this->municipio_id)));
675 717  
676   - $options = array(
677   - 'label' => 'Estado / Cidade',
678   - 'value' => $this->sigla_uf,
679   - 'disabled' => $desativarCamposDefinidosViaCep,
680   - 'inline' => true,
681   - 'required' => $enderecamentoObrigatorio
682   - );
683   -
684   - $helperOptions = array(
685   - 'attrName' => 'sigla_uf'
686   - );
687   -
688   - $this->inputsHelper()->uf($options, $helperOptions);
689   -
690   -
691   - // cidade
692   -
693   - $options = array(
694   - 'label' => '',
695   - 'placeholder' => 'Cidade',
696   - 'value' => $this->cidade,
697   - 'max_length' => 60,
698   - 'disabled' => $desativarCamposDefinidosViaCep,
699   - 'required' => $enderecamentoObrigatorio
700   - );
  718 + $this->inputsHelper()->simpleSearchMunicipio('municipio', $options, $helperOptions);
701 719  
702   - $this->inputsHelper()->text('cidade', $options);
  720 + $helperOptions = array('hiddenInputOptions' => array('options' => array('value' => $this->bairro_id)));
703 721  
  722 + $options = array( 'label' => Portabilis_String_Utils::toLatin1('Bairro / Zona de Localização - Buscar'), 'required' => $enderecamentoObrigatorio, 'disabled' => $desativarCamposDefinidosViaCep);
704 723  
705   - // bairro
  724 + $this->inputsHelper()->simpleSearchBairro('bairro', $options, $helperOptions);
706 725  
707 726 $options = array(
708   - 'label' => 'Bairro / Zona localização',
  727 + 'label' => 'Bairro / Zona de Localização - Cadastrar',
709 728 'placeholder' => 'Bairro',
710 729 'value' => $this->bairro,
711 730 'max_length' => 40,
... ... @@ -725,7 +744,7 @@ class indice extends clsCadastro
725 744  
726 745 $options = array(
727 746 'label' => '',
728   - 'placeholder' => 'Zona localização',
  747 + 'placeholder' => 'Zona localização ',
729 748 'value' => $this->zona_localizacao,
730 749 'disabled' => $desativarCamposDefinidosViaCep,
731 750 'resources' => $zonas,
... ... @@ -734,11 +753,16 @@ class indice extends clsCadastro
734 753  
735 754 $this->inputsHelper()->select('zona_localizacao', $options);
736 755  
  756 + $helperOptions = array('hiddenInputOptions' => array('options' => array('value' => $this->logradouro_id)));
  757 +
  758 + $options = array('label' => 'Tipo / Logradouro - Buscar', 'required' => $enderecamentoObrigatorio, 'disabled' => $desativarCamposDefinidosViaCep);
  759 +
  760 + $this->inputsHelper()->simpleSearchLogradouro('logradouro', $options, $helperOptions);
737 761  
738 762 // tipo logradouro
739 763  
740 764 $options = array(
741   - 'label' => 'Tipo / Logradouro',
  765 + 'label' => 'Tipo / Logradouro - Cadastrar',
742 766 'value' => $this->idtlog,
743 767 'disabled' => $desativarCamposDefinidosViaCep,
744 768 'inline' => true,
... ... @@ -1183,11 +1207,29 @@ class indice extends clsCadastro
1183 1207 }
1184 1208  
1185 1209 protected function _createOrUpdatePessoaEndereco($pessoaId) {
  1210 +
  1211 + $cep = idFederal2Int($this->cep_);
  1212 +
  1213 + $objCepLogradouro = new ClsCepLogradouro($cep, $this->logradouro_id);
  1214 +
  1215 + if (! $objCepLogradouro->existe())
  1216 + $objCepLogradouro->cadastra();
  1217 +
  1218 + $objCepLogradouroBairro = new ClsCepLogradouroBairro();
  1219 + $objCepLogradouroBairro->cep = $cep;
  1220 + $objCepLogradouroBairro->idbai = $this->bairro_id;
  1221 + $objCepLogradouroBairro->idlog = $this->logradouro_id;
  1222 +
  1223 +
  1224 + if (! $objCepLogradouroBairro->existe())
  1225 + $objCepLogradouroBairro->cadastra();
  1226 +
  1227 + #die("Morram <br> $cep <br> {$this->bairro_id} <br> {$this->logradouro_id}");
1186 1228 $endereco = new clsPessoaEndereco(
1187 1229 $pessoaId,
1188   - idFederal2Int($this->cep),
1189   - $this->idlog,
1190   - $this->idbai,
  1230 + $cep,
  1231 + $this->logradouro_id,
  1232 + $this->bairro_id,
1191 1233 $this->numero,
1192 1234 addslashes($this->complemento),
1193 1235 FALSE,
... ... @@ -1232,13 +1274,53 @@ class indice extends clsCadastro
1232 1274 }
1233 1275  
1234 1276 protected function createOrUpdateEndereco($pessoaId) {
1235   - $enderecoExterno = ! empty($this->cep_);
1236 1277  
1237   - if (! $enderecoExterno && $this->cep && $this->idbai && $this->idlog)
  1278 + if ($this->cep_ && is_numeric($this->bairro_id) && is_numeric($this->logradouro_id))
  1279 + $this->_createOrUpdatePessoaEndereco($pessoaId);
  1280 + else if($this->cep_ && is_numeric($this->municipio_id)){
  1281 +
  1282 + if (!is_numeric($this->bairro_id)){
  1283 + if ($this->canCreateBairro())
  1284 + $this->bairro_id = $this->createBairro();
  1285 + else
  1286 + return;
  1287 + }
  1288 +
  1289 + if (!is_numeric($this->logradouro_id)){
  1290 + if($this->canCreateLogradouro())
  1291 + $this->logradouro_id = $this->createLogradouro();
  1292 + else
  1293 + return;
  1294 + }
  1295 +
1238 1296 $this->_createOrUpdatePessoaEndereco($pessoaId);
1239 1297  
1240   - elseif($enderecoExterno)
1241   - $this->_createOrUpdateEnderecoExterno($pessoaId);
  1298 + }else{
  1299 + $endereco = new clsPessoaEndereco($pessoaId);
  1300 + $endereco->exclui();
  1301 + }
  1302 +
  1303 + }
  1304 +
  1305 + protected function canCreateBairro(){
  1306 + return !empty($this->bairro) && !empty($this->zona_localizacao);
  1307 + }
  1308 +
  1309 + protected function canCreateLogradouro(){
  1310 + return !empty($this->logradouro) && !empty($this->idtlog);
  1311 + }
  1312 +
  1313 + protected function createBairro(){
  1314 + $objBairro = new clsBairro(null,$this->municipio_id,null,addslashes($this->bairro), $this->currentUserId());
  1315 + $objBairro->zona_localizacao = $this->zona_localizacao;
  1316 +
  1317 + return $objBairro->cadastra();
  1318 + }
  1319 +
  1320 + protected function createLogradouro(){
  1321 + $objLogradouro = new clsLogradouro(null,$this->idtlog, $this->logradouro, $this->municipio_id,
  1322 + null, 'S', $this->currentUserId());
  1323 + return $objLogradouro->cadastra();
1242 1324 }
1243 1325  
1244 1326 protected function createOrUpdateTelefones($pessoaId) {
... ...
ieducar/intranet/educar_pesquisa_cep_log_bairro.php
... ... @@ -131,7 +131,7 @@ class miolo1 extends clsListagem
131 131 // consulta dados
132 132  
133 133 $pre_select = ' SELECT
134   - c.idlog, c.cep, c.idbai, u.sigla_uf, m.nome, t.idtlog, m.idmun, b.zona_localizacao ';
  134 + c.idlog, c.cep, c.idbai, u.sigla_uf, m.nome, t.idtlog, m.idmun, b.zona_localizacao, t.descricao ';
135 135  
136 136 $select = '
137 137 FROM
... ... @@ -176,7 +176,7 @@ class miolo1 extends clsListagem
176 176 $result = Portabilis_Utils_Database::fetchPreparedQuery($pre_select.$select, array('params' => array_values($params)));
177 177  
178 178 foreach ($result as $record) {
179   - list($idlog, $cep, $idbai, $uf, $cidade, $tipoLogradouroId, $id_mun, $zona) = $record;
  179 + list($idlog, $cep, $idbai, $uf, $cidade, $tipoLogradouroId, $id_mun, $zona, $descricao) = $record;
180 180  
181 181 $cidade = addslashes($cidade);
182 182  
... ... @@ -193,15 +193,15 @@ class miolo1 extends clsListagem
193 193  
194 194 $url = sprintf(
195 195 '<a href="javascript:void(0);" onclick="cv_set_campo(\'%s\', \'%s\', \'%s\', \'%s\', \'%s\', \'%s\', \'%s\', \'%s\', \'%s\', \'%s\', \'%s\', \'%s\', \'%s\', \'%s\', \'%s\', \'%s\', \'%s\', \'%s\', \'%s\', \'%s\', \'%s\', \'%s\', \'%s\', \'%s\', \'%s\', \'%s\', \'%s\');">%%s</a>',
196   - $_SESSION['campo1'], $bairro, $_SESSION['campo2'],
  196 + $_SESSION['campo1'], $bairro.' / Zona'.$zona, $_SESSION['campo2'],
197 197 $idbai, $_SESSION['campo3'], $cep,
198   - $_SESSION['campo4'], $logradouro,
  198 + $_SESSION['campo4'], $descricao." ".$logradouro,
199 199 $_SESSION['campo5'], $idlog,
200   - $_SESSION['campo6'], $uf, $_SESSION['campo7'], $cidade,
201   - $_SESSION['campo8'], $tipoLogradouroId, $_SESSION['campo9'], $s_end,
202   - $_SESSION['campo10'], $cep2, $_SESSION['campo11'], $uf,
  200 + '', '', '', '',
  201 + '', '', '', '',
  202 + $_SESSION['campo10'], $cep2, $_SESSION['campo11'], $id_mun.' - '.$cidade.' ('.$uf.')',
203 203 $_SESSION['campo12'], $_SESSION['campo13'], $id_mun,
204   - $_SESSION['campo14'], $zona
  204 + '', ''
205 205 );
206 206  
207 207 $this->addLinhas(array(
... ... @@ -407,4 +407,20 @@ function liberaCamposOuvidoria()
407 407  
408 408 window.parent.fechaExpansivel('div_dinamico_' + (parent.DOM_divs.length * 1 - 1));
409 409 }
  410 +
  411 +function liberaCampos(){
  412 +
  413 + parent.document.getElementById('municipio_municipio').disabled = false;
  414 + parent.document.getElementById('bairro_bairro').disabled = false;
  415 + parent.document.getElementById('logradouro_logradouro').disabled = false;
  416 + parent.document.getElementById('logradouro').disabled = false;
  417 + parent.document.getElementById('bairro').disabled = false;
  418 + parent.document.getElementById('idtlog').disabled = false;
  419 + parent.document.getElementById('zona_localizacao').disabled = false;
  420 + parent.document.getElementById('logradouro').value = '';
  421 + parent.document.getElementById('bairro').value = '';
  422 + parent.document.getElementById('idtlog').value = '';
  423 + parent.document.getElementById('zona_localizacao').value = '';
  424 +
  425 +}
410 426 </script>
411 427 \ No newline at end of file
... ...
ieducar/intranet/include/pessoa/clsBairro.inc.php
... ... @@ -41,6 +41,7 @@ class clsBairro
41 41 var $operacao;
42 42 var $idsis_cad;
43 43 var $idsis_rev;
  44 + var $zona_localizacao;
44 45  
45 46 var $tabela;
46 47 var $schema = "public";
... ... @@ -50,7 +51,7 @@ class clsBairro
50 51 *
51 52 * @return Object:clsBairro
52 53 */
53   - 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 )
  54 + 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 )
54 55 {
55 56 $this->idbai = $int_idbai;
56 57  
... ... @@ -70,6 +71,7 @@ class clsBairro
70 71 $this->idsis_rev = $int_idsis_rev;
71 72 $this->operacao = $str_operacao;
72 73 $this->origem_gravacao = $str_origem_gravacao;
  74 + $this->zona_localizacao = $zona_localizacao;
73 75  
74 76 $this->tabela = "bairro";
75 77 }
... ... @@ -113,9 +115,14 @@ class clsBairro
113 115 $campos .= ", origem_gravacao";
114 116 $values .= ", '{$this->origem_gravacao}'";
115 117 }
116   - $db->Consulta( "INSERT INTO {$this->schema}.{$this->tabela} ( idmun, nome, data_cad$campos ) VALUES ( '{$this->idmun}', '{$this->nome}', NOW()$values )" );
  118 + if( is_numeric( $this->zona_localizacao) )
  119 + {
  120 + $campos .= ", zona_localizacao";
  121 + $values .= ", '{$this->zona_localizacao}' ";
  122 + }
  123 + $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 )" );
117 124  
118   - return true;
  125 + return $db->InsertId("{$this->schema}.seq_bairro");
119 126 }
120 127 return false;
121 128 }
... ...
ieducar/intranet/include/pessoa/clsCepLogradouro.inc.php
... ... @@ -82,7 +82,7 @@ class clsCepLogradouro
82 82 $valores .= ", '$this->nrofin' ";
83 83 }
84 84  
85   - $db->Consulta( "INSERT INTO {$this->schema}.{$this->tabela} (cep, idlog $campos) VALUES ( '{$this->cep}', '{$this->idlog}' $values )" );
  85 + $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 )" );
86 86  
87 87 }
88 88 return false;
... ... @@ -130,7 +130,23 @@ class clsCepLogradouro
130 130 }
131 131 return false;
132 132 }
133   -
  133 +
  134 + /**
  135 + * Retorna um array com os dados de um registro.
  136 + * @return array
  137 + */
  138 + function existe()
  139 + {
  140 + if (is_numeric($this->cep) && is_numeric($this->idlog)) {
  141 + $db = new clsBanco();
  142 + $db->Consulta("SELECT 1 FROM {$this->schema}.{$this->tabela} WHERE cep = '{$this->cep}' AND idlog = '{$this->idlog}' ");
  143 + $db->ProximoRegistro();
  144 + return $db->Tupla();
  145 + }
  146 +
  147 + return FALSE;
  148 + }
  149 +
134 150 /**
135 151 * Remove o registro atual
136 152 *
... ... @@ -184,7 +200,7 @@ class clsCepLogradouro
184 200 $limit = "";
185 201 if(is_numeric($int_limite_ini) && is_numeric($int_limite_qtd))
186 202 {
187   - $limit = " LIMIT $int_limite_ini,$int_limite_qtd";
  203 + $limit = " LIMIT $int_limite_qtd OFFSET $int_limite_ini";
188 204 }
189 205  
190 206 $db = new clsBanco();
... ...
ieducar/intranet/include/pessoa/clsCepLogradouroBairro.inc.php
... ... @@ -76,7 +76,7 @@ class clsCepLogradouroBairro
76 76 // verificacoes de campos obrigatorios para insercao
77 77 if( is_numeric($this->idlog) && is_numeric($this->cep) && is_numeric($this->idbai))
78 78 {
79   - $db->Consulta( "INSERT INTO {$this->schema}.{$this->tabela} ($campos) VALUES ($values)" );
  79 + $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' )" );
80 80  
81 81 }
82 82 return false;
... ... @@ -198,5 +198,21 @@ class clsCepLogradouroBairro
198 198 }
199 199 return false;
200 200 }
  201 +
  202 + /**
  203 + * Retorna um array com os dados de um registro.
  204 + * @return array
  205 + */
  206 + function existe()
  207 + {
  208 + if (is_numeric($this->cep) && is_numeric($this->idlog) && is_numeric($this->idbai)) {
  209 + $db = new clsBanco();
  210 + $db->Consulta("SELECT 1 FROM {$this->schema}.{$this->tabela} WHERE cep = '{$this->cep}' AND idlog = '{$this->idlog}' AND idbai = '{$this->idbai}' ");
  211 + $db->ProximoRegistro();
  212 + return $db->Tupla();
  213 + }
  214 +
  215 + return FALSE;
  216 + }
201 217 }
202 218 ?>
203 219 \ No newline at end of file
... ...
ieducar/intranet/include/pessoa/clsEnderecoPessoa.inc.php
... ... @@ -346,11 +346,11 @@ class clsPessoaEndereco
346 346 $cep = $tupla['cep'];
347 347  
348 348 $tupla['cep'] = new clsCepLogradouro($cep, $tupla['idlog']);
349   - $tupla['idlog'] = new clsCepLogradouro($cep, $tupla['idlog']);
  349 + #$tupla['idlog'] = new clsCepLogradouro($cep, $tupla['idlog']);
350 350  
351   - $tupla['idbai'] = new clsPublicBairro(NULL, NULL, $tupla['idbai']);
  351 + #$tupla['idbai'] = new clsPublicBairro(NULL, NULL, $tupla['idbai']);
352 352  
353   - $bairro = $tupla['idbai']->detalhe();
  353 + #$bairro = $tupla['idbai']->detalhe();
354 354  
355 355 $tupla['zona_localizacao'] = $bairro['zona_localizacao'];
356 356  
... ...
ieducar/intranet/include/pessoa/clsLogradouro.inc.php
... ... @@ -32,9 +32,10 @@ class clsLogradouro
32 32 var $idlog;
33 33 var $idtlog;
34 34 var $nome;
35   - var $idnum;
  35 + var $idmun;
36 36 var $geom;
37 37 var $ident_oficial;
  38 + var $idpes_cad;
38 39  
39 40 var $tabela;
40 41 var $schema = "public";
... ... @@ -44,7 +45,7 @@ class clsLogradouro
44 45 *
45 46 * @return Object:clsLogradouro
46 47 */
47   - function clsLogradouro( $int_idlog = false, $str_idtlog=false, $str_nome=false, $int_idnum=false, $str_geom=false, $str_ident_oficial=false )
  48 + function clsLogradouro( $int_idlog = false, $str_idtlog=false, $str_nome=false, $int_idmun=false, $str_geom=false, $str_ident_oficial=false, $idpes_cad = null)
48 49 {
49 50 $this->idlog = $int_idlog;
50 51  
... ... @@ -55,9 +56,10 @@ class clsLogradouro
55 56 }
56 57  
57 58 $this->nome = $str_nome;
58   - $this->idnum = $int_idnum;
  59 + $this->idmun = $int_idmun;
59 60 $this->geom = $str_geom;
60 61 $this->ident_oficial = $str_ident_oficial;
  62 + $this->idpes_cad = $idpes_cad;
61 63  
62 64 $this->tabela = "logradouro";
63 65 }
... ... @@ -71,7 +73,7 @@ class clsLogradouro
71 73 {
72 74 $db = new clsBanco();
73 75 // verificacoes de campos obrigatorios para insercao
74   - if( is_string( $this->idtlog ) && is_string( $this->nome ) && is_numeric( $this->idnum ) && is_string($this->ident_oficial) )
  76 + if( is_string( $this->idtlog ) && is_string( $this->nome ) && is_numeric( $this->idmun ) && is_string($this->ident_oficial) )
75 77 {
76 78 $campos = "";
77 79 $values = "";
... ... @@ -82,9 +84,15 @@ class clsLogradouro
82 84 $values .= ", '{$this->geom}'";
83 85 }
84 86  
85   - $db->Consulta( "INSERT INTO {$this->schema}.{$this->tabela} ( idtlog, nome, idnum, ident_oficial$campos ) VALUES ( '{$this->idtlog}', '{$this->nome}', '{$this->idnum}'$values )" );
86   -
87   - return true;
  87 + if( is_string( $this->idpes_cad ) )
  88 + {
  89 + $campos .= ", idpes_cad";
  90 + $values .= ", '{$this->idpes_cad}'";
  91 + }
  92 +
  93 + $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 )" );
  94 +
  95 + return $db->InsertId("{$this->schema}.seq_logradouro");
88 96 }
89 97 return false;
90 98 }
... ... @@ -97,9 +105,9 @@ class clsLogradouro
97 105 function edita()
98 106 {
99 107 // verifica campos obrigatorios para edicao
100   - if( is_numeric( $this->idlog ) && is_string( $this->idtlog ) && is_string( $this->nome ) && is_numeric( $this->idnum ) && is_string($this->ident_oficial) )
  108 + if( is_numeric( $this->idlog ) && is_string( $this->idtlog ) && is_string( $this->nome ) && is_numeric( $this->idmun ) && is_string($this->ident_oficial) )
101 109 {
102   - $set = "SET idtlog = '{$this->idtlog}', nome = '{$this->nome}', idnum = '{$this->idnum}', ident_oficial = '{$this->ident_oficial}'";
  110 + $set = "SET idtlog = '{$this->idtlog}', nome = '{$this->nome}', idmun = '{$this->idmun}', ident_oficial = '{$this->ident_oficial}'";
103 111  
104 112 if( is_string( $this->geom ) )
105 113 {
... ... @@ -172,9 +180,9 @@ class clsLogradouro
172 180 $where .= "{$whereAnd}fcn_upper_nrm( nome ) ILIKE '%$str_nome%'";
173 181 $whereAnd = " AND ";
174 182 }
175   - if( is_numeric( $int_idnum ) )
  183 + if( is_numeric( $int_idmun ) )
176 184 {
177   - $where .= "{$whereAnd}idmun = '$int_idnum'";
  185 + $where .= "{$whereAnd}idmun = '$int_idmun'";
178 186 $whereAnd = " AND ";
179 187 }
180 188 if( is_string( $str_geom ) )
... ... @@ -226,7 +234,7 @@ class clsLogradouro
226 234 *
227 235 * @return Array
228 236 */
229   - 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 )
  237 + 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 )
230 238 {
231 239 // verificacoes de filtros a serem usados
232 240 $whereAnd = "WHERE ";
... ... @@ -240,9 +248,9 @@ class clsLogradouro
240 248 $where .= "{$whereAnd}nome LIKE '%$str_nome%'";
241 249 $whereAnd = " AND ";
242 250 }
243   - if( is_numeric( $int_idnum ) )
  251 + if( is_numeric( $int_idmun ) )
244 252 {
245   - $where .= "{$whereAnd}idnum = '$int_idnum'";
  253 + $where .= "{$whereAnd}idmun = '$int_idmun'";
246 254 $whereAnd = " AND ";
247 255 }
248 256 if( is_numeric( $int_idmun ) )
... ... @@ -311,7 +319,7 @@ class clsLogradouro
311 319 $this->idlog = $tupla["idlog"];
312 320 $this->idtlog = $tupla["idtlog"];
313 321 $this->nome = $tupla["nome"];
314   - $this->idnum = $tupla["idnum"];
  322 + $this->idmun = $tupla["idmun"];
315 323 $this->geom = $tupla["geom"];
316 324 $this->ident_oficial = $tupla["ident_oficial"];
317 325  
... ...
ieducar/intranet/scripts/padrao.js
... ... @@ -734,50 +734,66 @@ function cv_set_campo(campo1, valor1, campo2, valor2, campo3, valor3, campo4,
734 734 valor9, campo10, valor10, campo11, valor11, campo12, campo13, valor13,
735 735 campo14, valor14)
736 736 {
737   - obj1 = parent.document.getElementById(campo1);
738   - obj1.value = valor1;
739   - obj1.disabled = true;
  737 + obj1 = parent.document.getElementById(campo1);
  738 + if (obj1){
  739 + obj1.value = valor1;
  740 + }
740 741  
741   - obj2 = parent.document.getElementById(campo2);
742   - obj2.value = valor2;
  742 + obj2 = parent.document.getElementById(campo2);
  743 + if (obj2){
  744 + obj2.value = valor2;
  745 + }
743 746  
744   - obj3 = parent.document.getElementById(campo3);
745   - obj3.value = valor3;
  747 + obj3 = parent.document.getElementById(campo3);
  748 + if (obj3){
  749 + obj3.value = valor3;
  750 + }
746 751  
747   - obj4 = parent.document.getElementById(campo4);
748   - obj4.value = valor4;
749   - obj4.disabled = true;
  752 + obj4 = parent.document.getElementById(campo4);
  753 + if (obj4){
  754 + obj4.value = valor4;
  755 + }
750 756  
751   - obj5 = parent.document.getElementById(campo5);
752   - obj5.value = valor5;
  757 + obj5 = parent.document.getElementById(campo5);
  758 + if (obj5){
  759 + obj5.value = valor5;
  760 + }
753 761  
754   - obj6 = parent.document.getElementById(campo6);
755   - obj6.value = valor6;
  762 + obj6 = parent.document.getElementById(campo6);
  763 + if (obj6){
  764 + obj6.value = valor6;
  765 + }
756 766  
757   - obj7 = parent.document.getElementById(campo7);
758   - obj7.value = valor7;
759   - obj7.disabled = true;
  767 + obj7 = parent.document.getElementById(campo7);
  768 + if (obj7){
  769 + obj7.value = valor7;
  770 + }
760 771  
761   - obj8 = parent.document.getElementById(campo8);
762   - obj8.value = valor8;
  772 + obj8 = parent.document.getElementById(campo8);
  773 + if (obj8){
  774 + obj8.value = valor8;
  775 + }
763 776  
764 777 obj9 = parent.document.getElementById(campo9);
765   -
766 778 if (obj9) {
767 779 obj9.value = valor9;
768 780 }
769 781  
770   - obj10 = parent.document.getElementById(campo10);
771   - obj10.value = valor10;
772   - obj10.disabled = true;
  782 + obj10 = parent.document.getElementById(campo10);
  783 + if (obj10){
  784 + obj10.value = valor10;
  785 + }
773 786  
774   - obj11 = parent.document.getElementById(campo11);
775   - obj11.value = valor11;
776   - obj11.disabled = true;
  787 + obj11 = parent.document.getElementById(campo11);
  788 + if (obj11) {
  789 + obj11.value = valor11;
  790 + }
777 791  
778   - obj12 = parent.document.getElementById(campo12);
779   - obj12.value = valor8;
780   - obj12.disabled = true;
  792 + obj12 = parent.document.getElementById(campo12);
  793 + if (obj12) {
  794 + obj12.value = valor8;
  795 + obj12.disabled = true;
  796 + }
781 797  
782 798 if (parent.document.getElementById(campo13)) {
783 799 obj13 = parent.document.getElementById(campo13);
... ...
ieducar/lib/Portabilis/View/Helper/Input/Resource/SimpleSearchBairro.php 0 → 100644
... ... @@ -0,0 +1,71 @@
  1 +<?php
  2 +#error_reporting(E_ALL);
  3 +#ini_set("display_errors", 1);
  4 +/**
  5 + * i-Educar - Sistema de gestão escolar
  6 + *
  7 + * Copyright (C) 2006 Prefeitura Municipal de Itajaí
  8 + * <ctima@itajai.sc.gov.br>
  9 + *
  10 + * Este programa é software livre; você pode redistribuí-lo e/ou modificá-lo
  11 + * sob os termos da Licença Pública Geral GNU conforme publicada pela Free
  12 + * Software Foundation; tanto a versão 2 da Licença, como (a seu critério)
  13 + * qualquer versão posterior.
  14 + *
  15 + * Este programa é distribuí­do na expectativa de que seja útil, porém, SEM
  16 + * NENHUMA GARANTIA; nem mesmo a garantia implí­cita de COMERCIABILIDADE OU
  17 + * ADEQUAÇÃO A UMA FINALIDADE ESPECÍFICA. Consulte a Licença Pública Geral
  18 + * do GNU para mais detalhes.
  19 + *
  20 + * Você deve ter recebido uma cópia da Licença Pública Geral do GNU junto
  21 + * com este programa; se não, escreva para a Free Software Foundation, Inc., no
  22 + * endereço 59 Temple Street, Suite 330, Boston, MA 02111-1307 USA.
  23 + *
  24 + * @author Lucas Schmoeller da Silva <lucas@portabilis.com.br>
  25 + * @category i-Educar
  26 + * @license @@license@@
  27 + * @package Portabilis
  28 + * @since Arquivo disponível desde a versão ?
  29 + * @version $Id$
  30 + */
  31 +require_once 'lib/Portabilis/View/Helper/Input/SimpleSearch.php';
  32 +require_once 'lib/Portabilis/Utils/Database.php';
  33 +require_once 'lib/Portabilis/String/Utils.php';
  34 +/**
  35 + * Portabilis_View_Helper_Input_SimpleSearchBairro class.
  36 + *
  37 + * @author Lucas Schmoeller da Silva <lucasdavila@portabilis.com.br>
  38 + * @category i-Educar
  39 + * @license @@license@@
  40 + * @package Portabilis
  41 + * @since Classe disponível desde a versão ?
  42 + * @version @@package_version@@
  43 + */
  44 +class Portabilis_View_Helper_Input_Resource_SimpleSearchBairro extends Portabilis_View_Helper_Input_SimpleSearch {
  45 + public function simpleSearchBairro($attrName, $options = array()) {
  46 + $defaultOptions = array('objectName' => 'bairro',
  47 + 'apiController' => 'Bairro',
  48 + 'apiResource' => 'bairro-search',
  49 + 'showIdOnValue' => false);
  50 + $options = $this->mergeOptions($options, $defaultOptions);
  51 + parent::simpleSearch($options['objectName'], $attrName, $options);
  52 + }
  53 + protected function resourceValue($id) {
  54 + if ($id) {
  55 + $sql = "select nome, zona_localizacao from public.bairro where idbai = $1";
  56 + $options = array('params' => $id, 'return_only' => 'first-row');
  57 + $municipio = Portabilis_Utils_Database::fetchPreparedQuery($sql, $options);
  58 + $nome = $municipio['nome'];
  59 + $zona = ($municipio['zona_localizacao'] == 1 ? 'Urbana' : 'Rural');
  60 + return Portabilis_String_Utils::toLatin1($nome, array('transform' => true, 'escape' => false)) . " / Zona $zona";
  61 + }
  62 + }
  63 + protected function inputPlaceholder($inputOptions) {
  64 + return 'Informe o nome do bairro';
  65 + }
  66 +
  67 + protected function loadAssets() {
  68 + $jsFile = '/modules/Portabilis/Assets/Javascripts/Frontend/Inputs/Resource/SimpleSearchBairro.js';
  69 + Portabilis_View_Helper_Application::loadJavascript($this->viewInstance, $jsFile);
  70 + }
  71 +}
0 72 \ No newline at end of file
... ...
ieducar/lib/Portabilis/View/Helper/Input/Resource/SimpleSearchLogradouro.php 0 → 100644
... ... @@ -0,0 +1,74 @@
  1 +<?php
  2 +#error_reporting(E_ALL);
  3 +#ini_set("display_errors", 1);
  4 +/**
  5 + * i-Educar - Sistema de gestão escolar
  6 + *
  7 + * Copyright (C) 2006 Prefeitura Municipal de Itajaí
  8 + * <ctima@itajai.sc.gov.br>
  9 + *
  10 + * Este programa é software livre; você pode redistribuí-lo e/ou modificá-lo
  11 + * sob os termos da Licença Pública Geral GNU conforme publicada pela Free
  12 + * Software Foundation; tanto a versão 2 da Licença, como (a seu critério)
  13 + * qualquer versão posterior.
  14 + *
  15 + * Este programa é distribuí­do na expectativa de que seja útil, porém, SEM
  16 + * NENHUMA GARANTIA; nem mesmo a garantia implí­cita de COMERCIABILIDADE OU
  17 + * ADEQUAÇÃO A UMA FINALIDADE ESPECÍFICA. Consulte a Licença Pública Geral
  18 + * do GNU para mais detalhes.
  19 + *
  20 + * Você deve ter recebido uma cópia da Licença Pública Geral do GNU junto
  21 + * com este programa; se não, escreva para a Free Software Foundation, Inc., no
  22 + * endereço 59 Temple Street, Suite 330, Boston, MA 02111-1307 USA.
  23 + *
  24 + * @author Lucas Schmoeller da Silva <lucas@portabilis.com.br>
  25 + * @category i-Educar
  26 + * @license @@license@@
  27 + * @package Portabilis
  28 + * @since Arquivo disponível desde a versão ?
  29 + * @version $Id$
  30 + */
  31 +require_once 'lib/Portabilis/View/Helper/Input/SimpleSearch.php';
  32 +require_once 'lib/Portabilis/Utils/Database.php';
  33 +require_once 'lib/Portabilis/String/Utils.php';
  34 +/**
  35 + * Portabilis_View_Helper_Input_SimpleSearchLogradouro class.
  36 + *
  37 + * @author Lucas Schmoeller da Silva <lucasdavila@portabilis.com.br>
  38 + * @category i-Educar
  39 + * @license @@license@@
  40 + * @package Portabilis
  41 + * @since Classe disponível desde a versão ?
  42 + * @version @@package_version@@
  43 + */
  44 +class Portabilis_View_Helper_Input_Resource_SimpleSearchLogradouro extends Portabilis_View_Helper_Input_SimpleSearch {
  45 + public function simpleSearchLogradouro($attrName, $options = array()) {
  46 + $defaultOptions = array('objectName' => 'logradouro',
  47 + 'apiController' => 'Logradouro',
  48 + 'apiResource' => 'logradouro-search',
  49 + 'showIdOnValue' => false);
  50 + $options = $this->mergeOptions($options, $defaultOptions);
  51 + parent::simpleSearch($options['objectName'], $attrName, $options);
  52 + }
  53 +
  54 + protected function resourceValue($id) {
  55 + if ($id) {
  56 + $sql = "select nome, descricao as tipo_logradouro from
  57 + public.logradouro l left join urbano.tipo_logradouro tl on (l.idtlog = tl.idtlog)
  58 + where idlog = $1";
  59 + $options = array('params' => $id, 'return_only' => 'first-row');
  60 + $resource = Portabilis_Utils_Database::fetchPreparedQuery($sql, $options);
  61 + $tipo = Portabilis_String_Utils::toUtf8($resource['tipo_logradouro']);
  62 + $nome = Portabilis_String_Utils::toUtf8($resource['nome']);
  63 +
  64 + return Portabilis_String_Utils::toLatin1($tipo.' '.$nome, array('transform' => true, 'escape' => false));
  65 + }
  66 + }
  67 + protected function inputPlaceholder($inputOptions) {
  68 + return 'Informe o nome do logradouro';
  69 + }
  70 + protected function loadAssets() {
  71 + $jsFile = '/modules/Portabilis/Assets/Javascripts/Frontend/Inputs/Resource/SimpleSearchLogradouro.js';
  72 + Portabilis_View_Helper_Application::loadJavascript($this->viewInstance, $jsFile);
  73 + }
  74 +}
0 75 \ No newline at end of file
... ...
ieducar/lib/Portabilis/View/Helper/Input/SimpleSearch.php
... ... @@ -56,7 +56,8 @@ class Portabilis_View_Helper_Input_SimpleSearch extends Portabilis_View_Helper_I
56 56 'apiResource' => $objectName . '-search',
57 57 'searchPath' => '',
58 58 'addHiddenInput' => true,
59   - 'hiddenInputOptions' => array());
  59 + 'hiddenInputOptions' => array(),
  60 + 'showIdOnValue' => true);
60 61  
61 62 $options = $this->mergeOptions($options, $defaultOptions);
62 63  
... ... @@ -68,8 +69,12 @@ class Portabilis_View_Helper_Input_SimpleSearch extends Portabilis_View_Helper_I
68 69 // load value if received an resource id
69 70 $resourceId = $options['hiddenInputOptions']['options']['value'];
70 71  
71   - if ($resourceId && ! $options['options']['value'])
72   - $options['options']['value'] = $resourceId . " - ". $this->resourceValue($resourceId);
  72 + if ($resourceId && ! $options['options']['value']){
  73 + if ($options['showIdOnValue'])
  74 + $options['options']['value'] = $resourceId . " - ". $this->resourceValue($resourceId);
  75 + else
  76 + $options['options']['value'] = $this->resourceValue($resourceId);
  77 + }
73 78  
74 79 $this->hiddenInput($objectName, $attrName, $options);
75 80 $this->textInput($objectName, $attrName, $options);
... ...
ieducar/lib/Portabilis/View/Helper/Inputs.php
... ... @@ -201,6 +201,18 @@ class Portabilis_View_Helper_Inputs {
201 201  
202 202 }
203 203  
  204 + public function simpleSearchBairro($attrName, $inputOptions = array(), $helperOptions = array()) {
  205 +
  206 + $this->simpleSearchResourceInput('simpleSearchBairro', $attrName, $inputOptions, $helperOptions);
  207 +
  208 + }
  209 +
  210 + public function simpleSearchLogradouro($attrName, $inputOptions = array(), $helperOptions = array()) {
  211 +
  212 + $this->simpleSearchResourceInput('simpleSearchLogradouro', $attrName, $inputOptions, $helperOptions);
  213 +
  214 + }
  215 +
204 216 // multiple search resource input helper
205 217  
206 218  
... ...
ieducar/modules/Api/Views/BairroController.php 0 → 100644
... ... @@ -0,0 +1,62 @@
  1 +<?php
  2 +/**
  3 + * i-Educar - Sistema de gestão escolar
  4 + *
  5 + * Copyright (C) 2006 Prefeitura Municipal de Itajaí
  6 + * <ctima@itajai.sc.gov.br>
  7 + *
  8 + * Este programa é software livre; você pode redistribuí-lo e/ou modificá-lo
  9 + * sob os termos da Licença Pública Geral GNU conforme publicada pela Free
  10 + * Software Foundation; tanto a versão 2 da Licença, como (a seu critério)
  11 + * qualquer versão posterior.
  12 + *
  13 + * Este programa é distribuí­do na expectativa de que seja útil, porém, SEM
  14 + * NENHUMA GARANTIA; nem mesmo a garantia implí­cita de COMERCIABILIDADE OU
  15 + * ADEQUAÇÃO A UMA FINALIDADE ESPECÍFICA. Consulte a Licença Pública Geral
  16 + * do GNU para mais detalhes.
  17 + *
  18 + * Você deve ter recebido uma cópia da Licença Pública Geral do GNU junto
  19 + * com este programa; se não, escreva para a Free Software Foundation, Inc., no
  20 + * endereço 59 Temple Street, Suite 330, Boston, MA 02111-1307 USA.
  21 + *
  22 + * @author Lucas Schmoeller da Silva <lucas@portabilis.com.br>
  23 + * @category i-Educar
  24 + * @license @@license@@
  25 + * @package Api
  26 + * @subpackage Modules
  27 + * @since Arquivo disponível desde a versão ?
  28 + * @version $Id$
  29 + */
  30 +require_once 'lib/Portabilis/Controller/ApiCoreController.php';
  31 +require_once 'lib/Portabilis/Array/Utils.php';
  32 +require_once 'intranet/include/clsBanco.inc.php';
  33 +class BairroController extends ApiCoreController
  34 +{
  35 + protected function searchOptions() {
  36 + $municipioId = $this->getRequest()->municipio_id ? $this->getRequest()->municipio_id : 0;
  37 + return array('sqlParams' => array($municipioId), 'selectFields' => array('zona_localizacao'));
  38 +
  39 + }
  40 + protected function formatResourceValue($resource) {
  41 + $zona = $resource['zona_localizacao'] == 1 ? 'Urbana' : 'Rural';
  42 + $nome = $this->toUtf8($resource['name'], array('transform' => true));
  43 + return "$nome / Zona $zona ";
  44 + }
  45 + protected function sqlsForNumericSearch() {
  46 +
  47 + $sqls[] = "select idbai as id, nome as name, zona_localizacao from
  48 + public.bairro where idbai like $1||'%' and idmun = $2 ";
  49 + return $sqls;
  50 + }
  51 + protected function sqlsForStringSearch() {
  52 + $sqls[] = "select idbai as id, nome as name, zona_localizacao from
  53 + public.bairro where lower(to_ascii(nome)) like '%'||lower(to_ascii($1))||'%' and idmun = $2 ";
  54 + return $sqls;
  55 + }
  56 + public function Gerar() {
  57 + if ($this->isRequestFor('get', 'bairro-search'))
  58 + $this->appendResponse($this->search());
  59 + else
  60 + $this->notImplementedOperationError();
  61 + }
  62 +}
0 63 \ No newline at end of file
... ...
ieducar/modules/Api/Views/EnderecoController.php 0 → 100644
... ... @@ -0,0 +1,75 @@
  1 +<?php
  2 +/**
  3 + * i-Educar - Sistema de gestão escolar
  4 + *
  5 + * Copyright (C) 2006 Prefeitura Municipal de Itajaí
  6 + * <ctima@itajai.sc.gov.br>
  7 + *
  8 + * Este programa é software livre; você pode redistribuí-lo e/ou modificá-lo
  9 + * sob os termos da Licença Pública Geral GNU conforme publicada pela Free
  10 + * Software Foundation; tanto a versão 2 da Licença, como (a seu critério)
  11 + * qualquer versão posterior.
  12 + *
  13 + * Este programa é distribuí­do na expectativa de que seja útil, porém, SEM
  14 + * NENHUMA GARANTIA; nem mesmo a garantia implí­cita de COMERCIABILIDADE OU
  15 + * ADEQUAÇÃO A UMA FINALIDADE ESPECÍFICA. Consulte a Licença Pública Geral
  16 + * do GNU para mais detalhes.
  17 + *
  18 + * Você deve ter recebido uma cópia da Licença Pública Geral do GNU junto
  19 + * com este programa; se não, escreva para a Free Software Foundation, Inc., no
  20 + * endereço 59 Temple Street, Suite 330, Boston, MA 02111-1307 USA.
  21 + *
  22 + * @author Lucas Schmoeller da Silva <lucas@portabilis.com.br>
  23 + * @category i-Educar
  24 + * @license @@license@@
  25 + * @package Api
  26 + * @subpackage Modules
  27 + * @since Arquivo disponível desde a versão ?
  28 + * @version $Id$
  29 + */
  30 +require_once 'lib/Portabilis/Controller/ApiCoreController.php';
  31 +require_once 'lib/Portabilis/Array/Utils.php';
  32 +require_once 'lib/Portabilis/String/Utils.php';
  33 +require_once 'intranet/include/clsBanco.inc.php';
  34 +require_once 'intranet/include/funcoes.inc.php';
  35 +class EnderecoController extends ApiCoreController
  36 +{
  37 + protected function getPrimeiroEnderecoCep() {
  38 +
  39 + $cep = idFederal2int($this->getRequest()->cep);
  40 +
  41 + // consulta dados
  42 + $select = "
  43 + SELECT
  44 + 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
  45 +
  46 + FROM
  47 + urbano.cep_logradouro_bairro c, public.bairro b, public.logradouro l,
  48 + public.municipio m, public.uf u, urbano.tipo_logradouro t
  49 + WHERE
  50 + c.idlog = l.idlog AND
  51 + c.idbai = b.idbai AND
  52 + l.idmun = b.idmun AND
  53 + l.idmun = m.idmun AND
  54 + l.idtlog = t.idtlog AND
  55 + m.sigla_uf = u.sigla_uf AND
  56 + c.cep = {$cep} LIMIT 1";
  57 +
  58 + $result = Portabilis_Utils_Database::fetchPreparedQuery($select, array('return_only' => 'first-line'));
  59 + $return;
  60 + if (is_array($result)){
  61 + $return = array();
  62 + foreach ($result as $name => $value) {
  63 + $return[$name] = Portabilis_String_Utils::toUtf8($value);
  64 + }
  65 + }
  66 +
  67 + return $return;
  68 + }
  69 + public function Gerar() {
  70 + if ($this->isRequestFor('get', 'primeiro_endereco_cep'))
  71 + $this->appendResponse($this->getPrimeiroEnderecoCep());
  72 + else
  73 + $this->notImplementedOperationError();
  74 + }
  75 +}
0 76 \ No newline at end of file
... ...
ieducar/modules/Api/Views/LogradouroController.php 0 → 100644
... ... @@ -0,0 +1,65 @@
  1 +<?php
  2 +/**
  3 + * i-Educar - Sistema de gestão escolar
  4 + *
  5 + * Copyright (C) 2006 Prefeitura Municipal de Itajaí
  6 + * <ctima@itajai.sc.gov.br>
  7 + *
  8 + * Este programa é software livre; você pode redistribuí-lo e/ou modificá-lo
  9 + * sob os termos da Licença Pública Geral GNU conforme publicada pela Free
  10 + * Software Foundation; tanto a versão 2 da Licença, como (a seu critério)
  11 + * qualquer versão posterior.
  12 + *
  13 + * Este programa é distribuí­do na expectativa de que seja útil, porém, SEM
  14 + * NENHUMA GARANTIA; nem mesmo a garantia implí­cita de COMERCIABILIDADE OU
  15 + * ADEQUAÇÃO A UMA FINALIDADE ESPECÍFICA. Consulte a Licença Pública Geral
  16 + * do GNU para mais detalhes.
  17 + *
  18 + * Você deve ter recebido uma cópia da Licença Pública Geral do GNU junto
  19 + * com este programa; se não, escreva para a Free Software Foundation, Inc., no
  20 + * endereço 59 Temple Street, Suite 330, Boston, MA 02111-1307 USA.
  21 + *
  22 + * @author Lucas Schmoeller da Silva <lucas@portabilis.com.br>
  23 + * @category i-Educar
  24 + * @license @@license@@
  25 + * @package Api
  26 + * @subpackage Modules
  27 + * @since Arquivo disponível desde a versão ?
  28 + * @version $Id$
  29 + */
  30 +require_once 'lib/Portabilis/Controller/ApiCoreController.php';
  31 +require_once 'lib/Portabilis/Array/Utils.php';
  32 +require_once 'intranet/include/clsBanco.inc.php';
  33 +class LogradouroController extends ApiCoreController
  34 +{
  35 + protected function searchOptions() {
  36 + $municipioId = $this->getRequest()->municipio_id ? $this->getRequest()->municipio_id : 0;
  37 + return array('sqlParams' => array($municipioId), 'selectFields' => array('tipo_logradouro'));
  38 +
  39 + }
  40 + protected function sqlsForNumericSearch() {
  41 + $sqls[] = "select distinct idlog as id, nome as name, descricao as tipo_logradouro from
  42 + public.logradouro l left join urbano.tipo_logradouro tl on (l.idtlog = tl.idtlog)
  43 + where idlog like $1||'%' and idmun = $2 ";
  44 + return $sqls;
  45 + }
  46 + protected function sqlsForStringSearch() {
  47 + $sqls[] = "select distinct idlog as id, nome as name, descricao as tipo_logradouro from
  48 + public.logradouro l left join urbano.tipo_logradouro tl on (l.idtlog = tl.idtlog)
  49 + where (lower(to_ascii(nome)) like '%'||lower(to_ascii($1))||'%'
  50 + OR lower(to_ascii(descricao))|| ' ' ||lower(to_ascii(nome)) like '%'||lower(to_ascii($1))||'%')
  51 + and idmun = $2 ";
  52 + return $sqls;
  53 + }
  54 + protected function formatResourceValue($resource) {
  55 + $tipo = $resource['tipo_logradouro'];
  56 + $nome = $this->toUtf8($resource['name'], array('transform' => true));
  57 + return "$tipo $nome";
  58 + }
  59 + public function Gerar() {
  60 + if ($this->isRequestFor('get', 'logradouro-search'))
  61 + $this->appendResponse($this->search());
  62 + else
  63 + $this->notImplementedOperationError();
  64 + }
  65 +}
0 66 \ No newline at end of file
... ...
ieducar/modules/Cadastro/Assets/Javascripts/PessoaFisica.js
1   -
2 1 // before page is ready
3 2  
4 3 function hrefToCreateParent(parentType) {
... ... @@ -164,6 +163,12 @@ var validatesUniquenessOfCpf = function() {
164 163  
165 164  
166 165 var submitForm = function(event) {
  166 + if ($j('#cep_').val()){
  167 + if (!validateEndereco()){
  168 + alert('Preencha os campos de endera\u00e7amento corretamente.')
  169 + return;
  170 + }
  171 + }
167 172 if ($cpfField.val()) {
168 173 $j(document).data('submit_form_after_ajax_validation', true);
169 174 validatesUniquenessOfCpf();
... ... @@ -213,6 +218,9 @@ $j(document).ready(function() {
213 218 $submitButton.removeAttr('onclick');
214 219 $submitButton.click(submitForm);
215 220  
  221 + hideEnderecoFields();
  222 + fixUpPlaceholderEndereco();
  223 +
216 224 }); // ready
217 225  
218 226  
... ... @@ -287,4 +295,293 @@ var simpleSearchMaeOptions = {
287 295 };
288 296  
289 297 $paiNomeField.focusout(changeVisibilityOfLinksToPessoaPai);
290   -$maeNomeField.focusout(changeVisibilityOfLinksToPessoaMae);
291 298 \ No newline at end of file
  299 +$maeNomeField.focusout(changeVisibilityOfLinksToPessoaMae);
  300 +
  301 +// --------------------------------- SCRIPTS ENDEREÇAMENTO ---------------------------------------- //
  302 +
  303 +function hideEnderecoFields(){
  304 + if($j('#cep_').val()){
  305 +
  306 + if ($j('#bairro_id').val())
  307 + bloqueiaCadastroBairro();
  308 + else
  309 + bloqueiaBuscaBairro();
  310 +
  311 + if ($j('#logradouro_id').val())
  312 + bloqueiaCadastroLogradouro();
  313 + else
  314 + bloqueiaBuscaLogradouro();
  315 +
  316 + }else{
  317 +
  318 + $j('#bairro').closest('tr').hide();
  319 + $j('#logradouro').closest('tr').hide();
  320 + }
  321 +}
  322 +
  323 +
  324 +// Campo CEP
  325 +
  326 +var handleGetCep = function(dataResponse) {
  327 +
  328 + if (dataResponse['cep']){
  329 + $j('#municipio_id').val(dataResponse['idmun']);
  330 + $j('#municipio_municipio').val(dataResponse['idmun'] + ' - ' + dataResponse['nome'] + ' (' + dataResponse['sigla_uf'] + ')');
  331 + $j('#bairro_id').val(dataResponse['idbai']);
  332 + $j('#bairro_bairro').val(dataResponse['nome_bairro']+' / Zona '+(dataResponse['zona_localizacao'] == 1 ? 'Urbana' : 'Rural'));
  333 + $j('#logradouro_id').val(dataResponse['idlog']);
  334 + $j('#logradouro_logradouro').val(dataResponse['tipo_logradouro']+' '+dataResponse['nome_logradouro']);
  335 +
  336 + }else{
  337 + $j('#municipio_id').val('');
  338 + $j('#municipio_municipio').val('');
  339 + $j('#bairro_id').val('');
  340 + $j('#bairro_bairro').val('');
  341 + $j('#logradouro_id').val('');
  342 + $j('#logradouro_logradouro').val('');
  343 + }
  344 +
  345 + $j('#municipio_municipio').removeAttr('disabled');
  346 + $j('#bairro_bairro').removeAttr('disabled');
  347 + $j('#logradouro_logradouro').removeAttr('disabled');
  348 + $j('#bairro').removeAttr('disabled');
  349 + $j('#zona_localizacao').removeAttr('disabled');
  350 + $j('#idtlog').removeAttr('disabled');
  351 + $j('#logradouro').removeAttr('disabled');
  352 + bloqueiaCadastroBairro();
  353 + bloqueiaCadastroLogradouro();
  354 + fixUpPlaceholderEndereco();
  355 +}
  356 +
  357 +// Caso cep seja válido dispara ajax para recuperar dados do primeiro cep encontrado
  358 +var searchCep = function() {
  359 +
  360 + var cep = $j('#cep_').val();
  361 +
  362 + if (checkCepFields(cep)) {
  363 + var additionalVars = {
  364 + cep : cep,
  365 + };
  366 +
  367 + var options = {
  368 + url : getResourceUrlBuilder.buildUrl('/module/Api/endereco', 'primeiro_endereco_cep', additionalVars),
  369 + dataType : 'json',
  370 + data : {},
  371 + success : handleGetCep
  372 + };
  373 +
  374 + getResource(options);
  375 + }else
  376 + clearEnderecoFields();
  377 +
  378 +}
  379 +// Ao digitar um cep inválido todos os campos de endereçamento são bloqueados e limpados
  380 +function clearEnderecoFields(){
  381 + $j('#bairro').attr('disabled','disabled');
  382 + $j('#zona_localizacao').attr('disabled','disabled');
  383 + $j('#bairro_bairro').attr('disabled','disabled');
  384 + $j('#logradouro_logradouro').attr('disabled','disabled');
  385 + $j('#idtlog').attr('disabled','disabled');
  386 + $j('#logradouro').attr('disabled','disabled');
  387 + $j('#municipio_municipio').attr('disabled','disabled');
  388 + $j('#bairro').val('');
  389 + $j('#zona_localizacao').val('');
  390 + $j('#bairro_bairro').val('');
  391 + $j('#logradouro_logradouro').val('');
  392 + $j('#idtlog').val('');
  393 + $j('#logradouro').val('');
  394 + $j('#bairro_id').val('');
  395 + $j('#logradouro_id').val('');
  396 + $j('#municipio_municipio').val('');
  397 + $j('#municipio_id').val('');
  398 +}
  399 +// Verifica se o formato do cep é válido
  400 +function checkCepFields(cep) {
  401 + var regexp = /[0-9]{5}\-[0-9]{3}/;
  402 + var valid = regexp.test(cep);
  403 + return valid;
  404 +}
  405 +
  406 +// Eventos que escondem//apagam campos não usados na alternância entre cadastro/busca
  407 +function bloqueiaCadastroBairro(){
  408 + if (checkCepFields($j('#cep_').val())){
  409 + $j('#bairro').closest('tr').hide();
  410 + $j('#bairro_bairro').closest('tr').show();
  411 + $j('#zona_localizacao').val('');
  412 + $j('#bairro').val('');
  413 + }
  414 +}
  415 +
  416 +function bloqueiaBuscaBairro(){
  417 + if (checkCepFields($j('#cep_').val())){
  418 + $j('#bairro_bairro').closest('tr').hide();
  419 + $j('#bairro').closest('tr').show();
  420 + $j('#bairro_bairro').val('');
  421 + $j('#bairro_id').val('');
  422 + }
  423 +}
  424 +
  425 +function bloqueiaCadastroLogradouro(){
  426 + if (checkCepFields($j('#cep_').val())){
  427 + $j('#idtlog').closest('tr').hide();
  428 + $j('#logradouro_logradouro').closest('tr').show();
  429 + $j('#idtlog').val('');
  430 + $j('#logradouro').val('');
  431 + }
  432 +}
  433 +
  434 +function bloqueiaBuscaLogradouro(){
  435 + if (checkCepFields($j('#cep_').val())){
  436 + $j('#logradouro_logradouro').closest('tr').hide();
  437 + $j('#idtlog').closest('tr').show();
  438 + $j('#logradouro_logradouro').val('');
  439 + $j('#logradouro_id').val('');
  440 + }
  441 +}
  442 +
  443 +// Dispara evento para buscar CEP quando o mesmo for preenchido sem utilizar a lupa
  444 +$j('#cep_').keyup(searchCep);
  445 +$j('#cep_').change(searchCep);
  446 +
  447 +// Limpa campos logradouro e bairro simpleSearch
  448 +function clearLogradouroAndBairroFields(){
  449 + $j('#logradouro_logradouro').val('');
  450 + $j('#logradouro_id').val('');
  451 + $j('#bairro_bairro').val('');
  452 + $j('#bairro_id').val('');
  453 +}
  454 +
  455 +// Adiciona links para Informar/Atualizar troca entre cadastro ou busca
  456 +function addLinksEnderecamento(){
  457 + $j('<span>') .html('ou cadastre um novo bairro')
  458 + .attr('id', 'span-busca-bairro')
  459 + .css('color','blue')
  460 + .css('margin-left','5px')
  461 + .addClass('decorated')
  462 + .appendTo($j('#bairro_bairro').closest('td'));
  463 +
  464 + $j('<span>').html('ou busque um bairro existente')
  465 + .attr('id', 'span-cad-bairro')
  466 + .css('color','blue')
  467 + .css('margin-left','5px')
  468 + .addClass('decorated')
  469 + .appendTo($j('#zona_localizacao').closest('td'));
  470 +
  471 + $j('<span>').html('ou cadastre um novo logradouro')
  472 + .attr('id', 'span-busca-logradouro')
  473 + .css('color','blue')
  474 + .css('margin-left','5px')
  475 + .addClass('decorated')
  476 + .appendTo($j('#logradouro_logradouro').closest('td'));
  477 +
  478 + $j('<span>').html('ou busque logradouro existente')
  479 + .attr('id', 'span-cad-logradouro')
  480 + .css('color','blue')
  481 + .css('margin-left','5px')
  482 + .addClass('decorated')
  483 + .appendTo($j('#idtlog').closest('td'));
  484 +}
  485 +
  486 +addLinksEnderecamento();
  487 +
  488 +// Dispara evento para alterar entre Cadastro/Busca
  489 +$j('#span-busca-bairro').click(bloqueiaBuscaBairro);
  490 +$j('#span-cad-bairro').click(bloqueiaCadastroBairro);
  491 +$j('#span-busca-logradouro').click(bloqueiaBuscaLogradouro);
  492 +$j('#span-cad-logradouro').click(bloqueiaCadastroLogradouro);
  493 +
  494 +// Altera zebrado para não interferir quando for trocado entre cadastro/busca de bairro/logradouro
  495 +function alteraZebradoEnderacamento(){
  496 + if ($j('#bairro').closest('td').hasClass('formmdtd'))
  497 + $j('#bairro').closest('tr').find('td').toggleClass('formmdtd formlttd');
  498 + else
  499 + $j('#bairro').closest('tr').find('td').toggleClass('formlttd formmdtd');
  500 +
  501 + if ($j('#logradouro_logradouro').closest('td').hasClass('formmdtd'))
  502 + $j('#logradouro_logradouro').closest('tr').find('td').toggleClass('formmdtd formlttd');
  503 + else
  504 + $j('#logradouro_logradouro').closest('tr').find('td').toggleClass('formlttd formmdtd');
  505 +}
  506 +
  507 +alteraZebradoEnderacamento();
  508 +
  509 +// Correções para apagarem o valor do campo ID quando for deletado o valor do simpleSearch
  510 +$j('#municipio_municipio').keyup( function(){
  511 + if ($j('#municipio_municipio').val() == '')
  512 + $j('#municipio_id').val('').trigger('change');
  513 +});
  514 +
  515 +$j('#bairro_bairro').focusout( function(){
  516 + if ($j('#bairro_bairro').val() == '')
  517 + $j('#bairro_id').val('');
  518 +});
  519 +
  520 +$j('#logradouro_logradouro').focusout( function(){
  521 + if ($j('#logradouro_logradouro').val() == '')
  522 + $j('#logradouro_id').val('');
  523 +});
  524 +
  525 +/* Como os campos SimpleSearchBairro e SimpleSearchLogradouro dependem do valor do municipio_id,
  526 + quando o mesmo for alterado dispara um evento para apagar esses campos dependentes */
  527 +$j('#municipio_id').change(clearLogradouroAndBairroFields);
  528 +
  529 +function fixUpPlaceholderEndereco(){
  530 + $j('#municipio_municipio').attr('placeholder' , 'Digite o nome de um munic\u00edpio para buscar');
  531 + $j('#bairro_bairro').attr('placeholder' , 'Digite o nome de um bairro para buscar');
  532 + $j('#logradouro_logradouro').attr('placeholder' , 'Digite o nome de um logradouro para buscar');
  533 + $j('#bairro').attr('placeholder' , 'Digite o nome do novo bairro');
  534 + $j('#logradouro').attr('placeholder' , 'Digite o nome do novo logradouro');
  535 +}
  536 +
  537 +function validateEndereco(){
  538 +
  539 + var err = false;
  540 +
  541 + if (!$j('#municipio_id').val()){
  542 + $j('#municipio_municipio').addClass('error');
  543 + $j('#municipio_id').addClass('error');
  544 + err = true;
  545 + }
  546 +
  547 + if ($j('#logradouro_logradouro').closest('tr').is(':visible')){
  548 +
  549 + if (!$j('#logradouro_id').val()){
  550 + $j('#logradouro_logradouro').addClass('error');
  551 + $j('#logradouro_id').addClass('error');
  552 + err = true;
  553 + }
  554 + }else{
  555 + if (!$j('#logradouro').val()){
  556 + $j('#logradouro').addClass('error');
  557 + err = true;
  558 + }
  559 + if (!$j('#idtlog').val()){
  560 + $j('#idtlog').addClass('error');
  561 + err = true;
  562 + }
  563 + }
  564 + if ($j('#bairro_bairro').closest('tr').is(':visible')){
  565 + if (!$j('#bairro_id').val()){
  566 + $j('#bairro_bairro').addClass('error');
  567 + $j('#bairro_id').addClass('error');
  568 + err = true;
  569 + }
  570 +
  571 + }else{
  572 +
  573 + if (!$j('#bairro').val()){
  574 + $j('#bairro').addClass('error');
  575 + err = true;
  576 + }
  577 +
  578 + if (!$j('#zona_localizacao').val()){
  579 + $j('#zona_localizacao').addClass('error');
  580 + err = true;
  581 + }
  582 + }
  583 +
  584 + return !err;
  585 +
  586 +}
  587 +
  588 +// --------------------------------- FIM SCRIPTS ENDEREÇAMENTO ---------------------------------------- //
... ...
ieducar/modules/Portabilis/Assets/Javascripts/Frontend/Inputs/Resource/SimpleSearchBairro.js 0 → 100644
... ... @@ -0,0 +1,18 @@
  1 +var simpleSearchBairroOptions = {
  2 +
  3 + params : {
  4 + municipio_id : function() {
  5 + return $j('#municipio_id').val()
  6 + }
  7 + },
  8 +
  9 + canSearch : function() {
  10 +
  11 + if (! $j('#municipio_id').val()) {
  12 + alert('Selecione um munic\u00edpio.');
  13 + return false;
  14 + }
  15 +
  16 + return true;
  17 + }
  18 +};
0 19 \ No newline at end of file
... ...
ieducar/modules/Portabilis/Assets/Javascripts/Frontend/Inputs/Resource/SimpleSearchLogradouro.js 0 → 100644
... ... @@ -0,0 +1,18 @@
  1 +var simpleSearchLogradouroOptions = {
  2 +
  3 + params : {
  4 + municipio_id : function() {
  5 + return $j('#municipio_id').val()
  6 + }
  7 + },
  8 +
  9 + canSearch : function() {
  10 +
  11 + if (! $j('#municipio_id').val()) {
  12 + alert('Selecione um munic\u00edpio.');
  13 + return false;
  14 + }
  15 +
  16 + return true;
  17 + }
  18 +};
0 19 \ No newline at end of file
... ...
ieducar/modules/Portabilis/Assets/Version.php
... ... @@ -5,7 +5,7 @@
5 5  
6 6 class Portabilis_Assets_Version {
7 7  
8   - const VERSION = '11';
  8 + const VERSION = '12';
9 9  
10 10 }
11 11 ?>
... ...