Skip to content

Commit

Permalink
Refatoração na sessão de endereçamento no cadastro de pessoa física;
Browse files Browse the repository at this point in the history
  • Loading branch information
carolinesalib committed Nov 17, 2015
1 parent 90cbc8d commit 573b45c
Show file tree
Hide file tree
Showing 19 changed files with 972 additions and 114 deletions.
174 changes: 128 additions & 46 deletions ieducar/intranet/atendidos_cad.php
Original file line number Diff line number Diff line change
Expand Up @@ -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;
Expand Down Expand Up @@ -642,7 +645,45 @@ function Gerar()


// Detalhes do Endereço
if ($this->idlog){

$objLogradouro = new clsLogradouro($this->idlog);
$detalheLogradouro = $objLogradouro->detalhe();
if ($detalheLogradouro)
$this->municipio_id = $detalheLogradouro['idmun'];

// Caso seja um endereço externo, tentamos então 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);
Expand All @@ -651,61 +692,39 @@ function Gerar()
$this->campoOculto('id_cidade', $this->cidade);


// o endereçamento é opcional ao cadastrar pai ou mãe.
$enderecamentoObrigatorio = empty($parentType);
// o endereçamento é opcional
$enderecamentoObrigatorio = false;

// Caso o cep já esteja definido, os campos já vem desbloqueados inicialmente
$desativarCamposDefinidosViaCep = empty($this->cep);

// considera como endereço localizado por CEP quando alguma das variaveis de instancia
// idbai (bairro) ou idlog (logradouro) estão definidas, neste caso desabilita a edição
// dos campos definidos via CEP.
$desativarCamposDefinidosViaCep = ((bool)$GLOBALS['coreExt']['Config']->app->obriga_endereco_normalizado_pf) || ($this->idbai || $this->idlog);
$this->campoRotulo('','<b>Enderaçamento</b>', '<i>Digite um cep ou clique na lupa para busca avançada</i>');

$this->campoCep(
'cep_',
'CEP',
$this->cep,
$enderecamentoObrigatorio,
'-',
"&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>');\">",
$desativarCamposDefinidosViaCep
"&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>');\">",
false
);

$options = array('label' => Portabilis_String_Utils::toLatin1('Município'), '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 Localização - Buscar'), 'required' => $enderecamentoObrigatorio, 'disabled' => $desativarCamposDefinidosViaCep);

// bairro
$this->inputsHelper()->simpleSearchBairro('bairro', $options, $helperOptions);

$options = array(
'label' => 'Bairro / Zona localização',
'label' => 'Bairro / Zona de Localização - Cadastrar',
'placeholder' => 'Bairro',
'value' => $this->bairro,
'max_length' => 40,
Expand All @@ -725,7 +744,7 @@ function Gerar()

$options = array(
'label' => '',
'placeholder' => 'Zona localização',
'placeholder' => 'Zona localização ',
'value' => $this->zona_localizacao,
'disabled' => $desativarCamposDefinidosViaCep,
'resources' => $zonas,
Expand All @@ -734,11 +753,16 @@ function Gerar()

$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,
Expand Down Expand Up @@ -1183,11 +1207,29 @@ protected function createOrUpdateDocumentos($pessoaId) {
}

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 <br> $cep <br> {$this->bairro_id} <br> {$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,
Expand Down Expand Up @@ -1232,13 +1274,53 @@ protected function _createOrUpdateEnderecoExterno($pessoaId) {
}

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) {
Expand Down
32 changes: 24 additions & 8 deletions ieducar/intranet/educar_pesquisa_cep_log_bairro.php
Original file line number Diff line number Diff line change
Expand Up @@ -131,7 +131,7 @@ function Gerar()
// 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
Expand Down Expand Up @@ -176,7 +176,7 @@ function Gerar()
$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);

Expand All @@ -193,15 +193,15 @@ function Gerar()

$url = sprintf(
'<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>',
$_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(
Expand Down Expand Up @@ -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 = '';

}
</script>
13 changes: 10 additions & 3 deletions ieducar/intranet/include/pessoa/clsBairro.inc.php
Original file line number Diff line number Diff line change
Expand Up @@ -41,6 +41,7 @@ class clsBairro
var $operacao;
var $idsis_cad;
var $idsis_rev;
var $zona_localizacao;

var $tabela;
var $schema = "public";
Expand All @@ -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;

Expand All @@ -70,6 +71,7 @@ function clsBairro( $int_idbai = false, $int_idmun=false, $str_geom=false, $str_
$this->idsis_rev = $int_idsis_rev;
$this->operacao = $str_operacao;
$this->origem_gravacao = $str_origem_gravacao;
$this->zona_localizacao = $zona_localizacao;

$this->tabela = "bairro";
}
Expand Down Expand Up @@ -113,9 +115,14 @@ function cadastra()
$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;
}
Expand Down
22 changes: 19 additions & 3 deletions ieducar/intranet/include/pessoa/clsCepLogradouro.inc.php
Original file line number Diff line number Diff line change
Expand Up @@ -82,7 +82,7 @@ function cadastra()
$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;
Expand Down Expand Up @@ -130,7 +130,23 @@ function edita()
}
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
*
Expand Down Expand Up @@ -184,7 +200,7 @@ function lista( $int_cep=false, $int_idlog=false, $int_nroini=false, $int_nrofin
$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();
Expand Down
Loading

0 comments on commit 573b45c

Please sign in to comment.